【发布时间】:2017-06-18 09:17:36
【问题描述】:
当我使用以下注册表条目向 Windows 资源管理器上下文菜单添加条目时:
[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shell]
[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shell\Similar Files]
[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shell\Similar Files\command]
@="%AppData%\\FindAlike\\AddRightClickFile.bat \"%1\""
我收到一个错误
Windows cannot access the specified device, path or file. You may not have the appropriate permissions to access the item.
如果我将文件 AddRightClickFile.bat 复制到 C:\Windows\System32 并将注册表项更改为
[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shell]
[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shell\Similar Files]
[HKEY_CURRENT_USER\SOFTWARE\Classes\*\shell\Similar Files\command]
@="AddRightClickFile.bat \"%1\""
没有错误发生。但是,我想将 AddRightClickFile.bat 存储在 %Appdata%\FindAlike 中。
AddRightClickFile.bat 中的代码是
reg add "HKEY_CURRENT_USER\Software\FindAlike" /f /v "TestFilePath" /t REG_SZ /d %1
有什么方法可以让 .bat 文件从上下文菜单命令运行,同时将其存储在 %AppData% 的子文件夹中?
编辑
我使用以下代码在代码中创建了注册表项:
RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Classes\*\shell\Similar Files\command");
string sValue = @"%AppData%\FindAlike\AddRightClickFile.bat ""%1""";
rk.SetValue("",sValue, RegistryValueKind.ExpandString);
并设置 AddRightClickFile.bat 如下:
start
reg add "HKEY_CURRENT_USER\Software\FindAlike" /f /v "RightClickFileName" /t REG_SZ /d %1
exit 0
这项工作正常,但在我右键单击的文件的目录中创建了一个命令窗口。使用任务管理器查看进程,我看到创建了 cmd.exe 和 conhost.exe 进程。如果我删除命令窗口,两个进程都会消失。有什么方法可以自动终止这些进程而不用名字杀死它们,这可能会产生不良后果。
【问题讨论】:
标签: windows batch-file contextmenu