Command line 注册表命令项为';不要像在命令行中一样运行

Command line 注册表命令项为';不要像在命令行中一样运行,command-line,command-line-arguments,clickonce,command-prompt,Command Line,Command Line Arguments,Clickonce,Command Prompt,我澄清的问题是,“在命令行中从注册表中运行命令与在命令行中运行同一命令有什么不同?那么我如何使它以我想要的方式运行?” 有关我的计划的信息: 这是一个ClickOnce应用程序,据我所知,没有一种很好的方法来获得exe的确切路径,而不是appref-ms。因此,我的问题有一个警告,如果有一种方法可以在每次部署程序时找到exe的确切路径,并且我能够编辑注册表以指向所说的路径,那么整个事情都可以避免写下来的路径 我在HKEY_CLASSES_根目录中有此条目,请参见以下证据: 所以,右键单击下面应

我澄清的问题是,“在命令行中从注册表中运行命令与在命令行中运行同一命令有什么不同?那么我如何使它以我想要的方式运行?”

有关我的计划的信息:
这是一个ClickOnce应用程序,据我所知,没有一种很好的方法来获得exe的确切路径,而不是appref-ms。因此,我的问题有一个警告,如果有一种方法可以在每次部署程序时找到exe的确切路径,并且我能够编辑注册表以指向所说的路径,那么整个事情都可以避免写下来的路径

我在HKEY_CLASSES_根目录中有此条目,请参见以下证据:

所以,右键单击下面应该可以工作所有输入的内容都是正确的,但它不工作

所以我想它可能不喜欢我的%APPDATA%,老实说这不重要,我收到了一条新的错误消息


让你知道我的程序确实有效,它正在做一些事情,并从传递给它的参数中提取路径


感谢您阅读我冗长的问题。

以下是您如何设置我一直在尝试设置的内容。这个解释是假设你确切地知道你想做什么

通过右键单击上下文菜单项发布(脱机)带有命令行参数的ClickOnce应用程序,您可以根据需要多次部署该应用程序,而无需每次编辑注册表。

如果你正在做一个在线的,只需使用这个,它有两个恒星链接的答案。这比下面的要简单得多

  • 使用Visual Studio项目属性中的ClickOnce将发布的项目部署到文件共享上
  • 获取此代码。(如果需要多个参数,请将它们视为一个大字符串,然后拆分)

  • 我为什么问这个问题以及我的答案。

  • 使用注册表项,就好像您正在为您的程序创建非常正常的运行上下文菜单一样然而单击显示“展开环境变量”的复选框
  • 因此,您键入的命令应如下所示。
    cmd.exe/C”“%InsertEnvironmentVariable%\Path\Name到\您的文件。appref ms”“%1”“
  • 这应该是从谷歌搜索开始的,主要是因为我从来没有这样做过,我很容易放弃想法。我还想对命令行和注册表的信息进行评论,这些信息组织得非常糟糕,数量之多令人难以置信


    希望这能帮助那些试图部署一个简洁的clickonce轻量级程序的人,它看起来像一个普通程序一样集成在一起。

    我发现了其中的区别。这是注册表使用运行。。。打开东西。但即使如此,它也表示无法找到此运行命令“cmd.exe/K”%appdata%\Microsoft\Windows\Start Menu\Programs\Alliance Steel\Alliance Steel Shippers\Shipper Editor.appref ms“%1”的路径。我已经完全弄明白了。除了使用run外,它不会扩展%appdata%,所以它确实很重要。我必须创建一个foobar键,regedit通常不允许从pc mag使用contextedit,因为它有一个gui。。。使REG_SZ成为REG_EXPAND_SZ并且%appdata%起作用。我将很快回答我自己的问题,并介绍让ClickOnce应用程序读入命令行参数并从Windows上下文菜单项运行所采取的步骤。
    'VB.NET style code
    Dim activationData() As String = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
    
    MsgBox(activationData(0)) 'Your big long argument before being split editted or modified.