Windows + R或“start”命令功能非常强大。 我可以使用Windows + R“chrome”启动Google Chrome。但是,当我在运行的cmd.exe中键入“chrome”时,chrome不会启动 - 因为它未在PATH中列出。所以我想知道“Run”在哪里查找起点?
我正在尝试以编程方式获取相同的信息,直到现在我很好地检查其中一个PATH目录中是否存在“genericCommand
”或“genericCommand
。exe”。适用于“记事本”,“mspaint”等。但不适用于“铬”。
我想以编程方式将给定命令映射到使用Windows run或“start”命令启动时执行的程序。
为什么呢?有什么想法吗?
答案 0 :(得分:2)
查看注册表项:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
这是另一个命令列表(除%PATH%目录中的应用程序外)
您可以在此处覆盖某些默认值 - 例如,您要将cmd.exe替换为cmdr.exe。
我使用它的另一个例子是为notepad ++。exe添加“np”别名。创建一个名为“np.exe”的子键,其默认值为“C:\ Program Files(x86)\ Notepad ++ \ notepad ++。exe”。所以从运行对话框中我可以输入“np c:\ temp \ something.txt”并在np ++中打开它。
此注册表项中的任何内容都将被视为优先于%PATH%中的任何内容。这就是为什么你可以通过在这里添加它们来覆盖cmd.exe和其他人。
答案 1 :(得分:1)
很多。 这就是我想出来的:
private static string GetCommandPathFromRegistry(string commandNameWithExeEnding)
{
var localMachineRegistryKey = Registry.LocalMachine;
localMachineRegistryKey = localMachineRegistryKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths");
var commandSubKey = localMachineRegistryKey.OpenSubKey(commandNameWithExeEnding);
return commandSubKey?.GetValue("")?.ToString();
}
BR Matthias