添加右键菜单选项运行RDP脚本无响应,注册表配置是否有误?
兄弟,你的问题主要出在两个关键地方,我给你一步步拆解:
1. 注册表位置的参数不符合你的需求
你把注册表项建在了HKEY_CLASSES_ROOT\directory\background\shell下面,这个位置对应的是文件夹窗口空白处的右键菜单,这里的%1传递的是当前打开的文件夹的路径,而不是你想要的目标RDP服务器地址(比如\\devserver)。也就是说,你点击这个右键选项时,脚本拿到的参数是你当前所在的文件夹路径,根本不是你要连接的服务器地址,这肯定没法正常启动RDP。
如果你的需求是选中网络共享文件夹(比如\devserver)时右键启动RDP,那应该把注册表项移到HKEY_CLASSES_ROOT\Directory\shell\Open RDP Session\command(去掉background部分),这样当你选中一个共享文件夹时,%1就会传递这个共享的路径,刚好匹配你的脚本需求。
如果你的需求是在文件夹空白处右键,手动输入服务器地址来启动RDP,那这个%1参数就没用了,你得修改你的.bat脚本,让它弹出输入框来获取服务器地址(比如用set /p server="请输入RDP服务器地址:"这样的命令)。
2. 脚本的调用方式可能有问题
就算参数是对的,直接在注册表命令里写.bat文件路径,有时候系统会因为执行上下文的问题没法正确运行脚本。你应该用cmd.exe /c来调用你的bat,确保它在命令行环境下执行。
修正后的命令应该写成这样:cmd.exe /c "C:\scripts\StartRDP.bat "%1""
快速排查小技巧
你可以先在你的StartRDP.bat开头加一行日志命令,比如:echo 收到的参数:%1 > C:\rdp_test_log.txt
然后点击右键菜单,再去看这个日志文件里的内容,就能清楚知道脚本到底拿到了什么参数,方便你确认问题出在哪。
备注:内容来源于stack exchange,提问作者Jacob Stamm




