自动检测并修复 rdpclip.exe 的计划任务

好的!我们可以创建一个 自动检测并修复 rdpclip.exe 的计划任务,在它未运行或卡死时自动重启,从而保持远程桌面剪贴板功能可用。


✅ 整体方案

  1. 编写 PowerShell 脚本:检测 rdpclip.exe 是否运行,若未运行则启动。
  2. 配置 Windows 计划任务:定期(如每5分钟)以当前用户身份运行该脚本。
  3. 无需管理员权限(除非你希望对所有用户生效)。

📜 第一步:创建 PowerShell 检测脚本

将以下内容保存为 Check-RdpClip.ps1(例如保存到 C:\Scripts\Check-RdpClip.ps1):

# Check-RdpClip.ps1
# 自动检测并重启 rdpclip.exe(仅限当前用户会话)

$ProcessName = "rdpclip"
$LogPath = "$env:USERPROFILE\Logs\RdpClipFix.log"

# 创建日志目录
$LogDir = Split-Path $LogPath -Parent
if (!(Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir -Force | Out-Null }

$Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

# 检查进程是否存在
$Process = Get-Process -Name $ProcessName -ErrorAction SilentlyContinue

if ($Process) {
    # 进程存在,可选:检查是否无响应(高级)
    # 此处简化处理:只要存在就不操作
    Add-Content -Path $LogPath -Value "[$Timestamp] $ProcessName 正在运行。"
} else {
    Add-Content -Path $LogPath -Value "[$Timestamp] $ProcessName 未运行,正在启动..."
    try {
        Start-Process "$env:windir\system32\rdpclip.exe"
        Add-Content -Path $LogPath -Value "[$Timestamp] $ProcessName 已成功启动。"
    } catch {
        Add-Content -Path $LogPath -Value "[$Timestamp] 启动失败: $_"
    }
}

💡 说明:

  • 该脚本只检查当前用户的 rdpclip.exe(RDP 剪贴板进程是每个用户独立的)。
  • 日志保存在 %USERPROFILE%\Logs\RdpClipFix.log,便于排查。

⚙️ 第二步:设置执行策略(仅首次需要)

PowerShell 默认可能禁止脚本运行。以当前用户身份运行以下命令(无需管理员):

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

输入 Y 确认即可。这仅影响当前用户,安全且必要。


🕒 第三步:创建计划任务(自动每5分钟运行)

方法 A:使用 PowerShell 创建任务(推荐)

当前用户身份运行以下 PowerShell 脚本(复制粘贴执行一次即可):

$TaskName = "AutoFix-RdpClip"
$ScriptPath = "C:\Scripts\Check-RdpClip.ps1"

# 确保脚本路径存在
if (!(Test-Path (Split-Path $ScriptPath))) {
    New-Item -ItemType Directory -Path (Split-Path $ScriptPath) -Force
}

# 创建计划任务动作:运行 PowerShell 脚本
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
    -Argument "-NoProfile -WindowStyle Hidden -File `"$ScriptPath`""

# 触发器:每5分钟运行一次(从现在开始)
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5)

# 设置:仅在用户登录时运行,不唤醒计算机,允许按需启动
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit (New-TimeSpan -Hours 1)

# 注册任务(仅当前用户)
Register-ScheduledTask -TaskName $TaskName -Action $Action -Trigger $Trigger -Settings $Settings -Description "自动检测并修复 RDP 剪贴板进程" -RunLevel Limited

✅ 该任务:

  • 仅在你登录到桌面时运行(符合 RDP 使用场景)。
  • 隐藏窗口-WindowStyle Hidden),不影响操作。
  • 5 分钟检查一次(可修改 -Minutes 5 调整频率)。
  • 不需要管理员权限。

方法 B:手动通过“任务计划程序”创建(图形界面)

  1. 打开 任务计划程序(Win + R → taskschd.msc)。
  2. 右侧点击 “创建基本任务”
  3. 名称:AutoFix-RdpClip
  4. 触发器:选择 “每天” → 下一步 → 设置开始时间 → 勾选 “重复任务间隔” → 选 5 分钟,持续 无限期
  5. 操作:“启动程序” → 程序填:
    PowerShell.exe
    
    参数填:
    -NoProfile -WindowStyle Hidden -File "C:\Scripts\Check-RdpClip.ps1"
    
  6. 完成前勾选 “当点击‘完成’时,打开此任务属性”
  7. 在“常规”选项卡中:
    • 选择 “只在用户登录时运行”
    • 勾选 “不存储密码”(如果不需要跨会话)
  8. 点击确定。

🔍 验证是否生效

  1. 手动结束 rdpclip.exe(任务管理器)。
  2. 等待最多 5 分钟(或立即右键任务 → “运行” 测试)。
  3. 检查日志文件:%USERPROFILE%\Logs\RdpClipFix.log
  4. 查看任务管理器是否重新出现 rdpclip.exe

🛑 停用或删除任务

如需停用,打开任务计划程序 → 找到 AutoFix-RdpClip → 右键禁用或删除。

或 PowerShell 删除:

Unregister-ScheduledTask -TaskName "AutoFix-RdpClip" -Confirm:$false

✅ 总结

组件 说明
脚本 Check-RdpClip.ps1:智能检测+启动
日志 %USERPROFILE%\Logs\RdpClipFix.log
计划任务 每5分钟运行一次,仅当前用户登录时有效
权限 无需管理员,安全可靠

如果你希望这个任务在所有 RDP 用户登录时都生效(多用户服务器环境),也可以配置为“在用户登录时触发”,我可以提供多用户版本。需要吗?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容