注册协议处理程序Windows 7 - 错误的工作目录

时间:2017-04-26 17:53:40

标签: c# windows google-chrome internet-explorer-11 protocol-handler

我在Windows注册表中注册了一个自定义协议处理程序,因此我可以使用Internet-Browser中的特定参数启动我的应用程序。到目前为止,注册工作正常。 IE和Chrome都在推出我的应用程序。

我在这个问题中使用了Erwinus的答案来注册协议处理程序:how do I create my own URL protocol? (e.g. so://...)

奇怪的是,两个浏览器都没有正确设置工作目录。 Chrome似乎默认工作目录为空字符串,而IE默认工作目录为“C:\ Users \ User-X \ Desktop”。

是否有这种行为?
有没有办法在注册表中为我的应用程序指定工作目录?

提前感谢此问题的任何线索。

2 个答案:

答案 0 :(得分:0)

工作目录连接到命令行参数以解析.\file.ext之类的路径,因为没有相对路径参数,工作目录无关紧要。

您的应用程序不应依赖于工作目录来加载库和其他特定于应用程序的文件。

有一个名为NoWorkingDirectory的无证值可以在文件类型注册上设置,但我不确定它是否适用于URL协议。

答案 1 :(得分:0)

很久没有人给出正确答案了,我遇到了同样的问题并找到了答案。所以,把它贴在这里,对别人有帮助。

在 URL 协议(注册表项)中包含更改目录,以便在启动应用程序之前更改工作目录。假设您创建了名为“ProtoTest2”的 URL 协议,并希望从目录“C:\Source\For Ref\URL Protocol\BatchTest”运行您的应用程序,那么下面的命令更新注册表中 URL 协议的命令条目.首先将目录更改为所需位置并启动应用程序。 此问题中提供了详细示例How to make "URL Protocol" to launch application from its own directory instead of launching from c:\windows\system32?

reg add HKEY_CLASSES_ROOT\ProtoTest2\shell\open\command /t REG_EXPAND_SZ /d "%ComSpec% /C \"cd /D \"C:\Source\For Ref\URL Protocol\BatchTest\" ^& showPath.bat\"" /f
相关问题