【问题标题】:How to run a ClickOnce application (.appref-ms) on a remote computer?如何在远程计算机上运行 ClickOnce 应用程序 (.appref-ms)?
【发布时间】:2010-11-01 17:39:30
【问题描述】:

我正在尝试使用 WMI 在远程计算机上通过 .appref-ms 快捷方式启动 ClickOnce 应用程序,但无法成功。如果我尝试运行 notepad.exe,以下代码可以正常工作。

ManagementPath pm = new ManagementPath(@"\\server\root\cimv2:Win32_process");
ManagementClass processClass = new ManagementClass(pm);

//Get an input parameters object for this method
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");

//Fill in input parameter values
inParams["CommandLine"] = @"C:\Documents and Settings\Start Menu\Programs\New\New App.appref-ms";

//Execute the method
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);

【问题讨论】:

    标签: c# .net wmi clickonce remote-access


    【解决方案1】:

    您遇到的错误是什么。

    顺便说一句,您使用的命令行路径似乎有两个问题。

    1. 开始菜单文件夹 IMO 位于 C:\Documents and Settings\"Usernamehere"\StartMenu。
    2. 我不确定,但我认为您不能远程运行位于用户配置文件中的程序。尝试将程序安装到其他位置,例如 c:\program 文件,然后尝试调用它。

    除此之外,如果您提及您遇到的确切错误,则有助于诊断问题。

    【讨论】:

    • 嗨,Amir 对于第 1 点,我刚刚从代码中删除了用户名。现在我已将 New App.appref-ms 放入 C:dive 但仍无法启动它。我使用下面的代码 ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null); 得到错误代码“8”,这意味着“未知故障” Console.WriteLine("进程返回:" + outParams["returnValue"]);
    【解决方案2】:

    尝试通过rundll32 启动 .appref-ms 快捷方式:

    inParams["CommandLine"] = @"rundll32.exe dfshim.dll,ShOpenVerbShortcut ""C:\New App.appref-ms"";
    

    或者,您可以使用应用程序部署 URL(您可以通过在文本编辑器中打开 .appref-ms 文件来查看),而不是依赖快捷路径:

    inParams["CommandLine"] = @"rundll32.exe dfshim.dll,ShOpenVerbApplication http://github-windows.s3.amazonaws.com/GitHub.application";
    

    请记住,Win32_Process.Create 无法远程创建交互式进程。

    【讨论】:

    • 这里有一个附加信息链接,以防有人像我一样不幸在新的十年中不得不使用 ClickOnce:mking.net/blog/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多