C# 在VS2010部署项目中配置Windows协议

C# 在VS2010部署项目中配置Windows协议,c#,.net,windows,registry,protocols,C#,.net,Windows,Registry,Protocols,我有一个以命令行方式调用的应用程序。我希望将一个协议与之关联,让我们称之为协议runapprunapp将调用runapp.exe 我计划通过应用程序部署项目的注册表部分配置它。我首先研究了其他协议,特别是mailto。我注意到我需要以下内容: HKEY\U CLASSES\U ROOT下的一个新键称为runapp 创建HKEY\U类\u ROOT\runapp\shell\open\command的一系列新键 在runapp键下,我将添加两个字符串,(默认),带值URL:runapp-prot

我有一个以命令行方式调用的应用程序。我希望将一个协议与之关联,让我们称之为协议
runapp
runapp
将调用
runapp.exe

我计划通过应用程序部署项目的注册表部分配置它。我首先研究了其他协议,特别是
mailto
。我注意到我需要以下内容:

  • HKEY\U CLASSES\U ROOT下的一个新键称为
    runapp
  • 创建
    HKEY\U类\u ROOT\runapp\shell\open\command的一系列新键
  • runapp
    键下,我将添加两个字符串,
    (默认)
    ,带值
    URL:runapp-protocol
    ,第二个字符串
    URL-protocol
    ,不带值
  • 同样在
    命令
    键下,我需要添加一个字符串,
    (默认)
    ,值为
    “C:\path\runapp.exe”“%1”
我把一切都安排得很好。但是,当我实际运行安装程序时,在我的
(默认)
字符串之前,已经有另一个无值的
(默认)
字符串。因此,看起来我是以错误的方式设置了
(默认)
字符串。正确的方法是什么

其次,在备份所有内容后,我在regedit中手动破解了这个不正确的密钥。现在,由于我的密钥看起来非常像
mailto
,我终于停止了“找不到程序”错误,但我的应用程序实际上似乎根本没有执行


关于如何正确设置
(默认值)
字符串并进一步解决协议问题,您有什么想法吗?谢谢。

您是否实际使用“(默认)”作为值名?如果是这样,那可能是你的问题。但你也不能把它留空。如果不设置它,它将成为
新值#N
。那么,如何模拟名为
(默认值)
的字符串的设置呢?我已经有一段时间没有完成安装项目了,但我知道在使用RegSetValueEx()的代码中,您可以使用NULL或“”来设置默认值。请查看此链接。它解释了如何在安装程序项目中提供默认值。啊,如果我只是删除字符串名称,它实际上会正确地变成
(默认)
。谢谢