2009-06-10 112 views
3

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

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); 

回答

0

你得到的错误是什么。

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

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

除此之外,如果你提到了你正在得到的确切的错误,那么它将有助于诊断问题。

+0

嗨阿米尔 对于点1有用户名我刚刚从代码中删除它。 现在我已经把新App.appref-ms放在C:dive中,但仍然无法启动它。我得到错误代码“8”,意思是“未知失败”,使用下面的代码 ManagementBaseObject outParams = processClass.InvokeMethod(“Create”,inParams,null); Console.WriteLine(“process returned:”+ outParams [“returnValue”]); – 2009-06-10 09:39:40

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不能远程创建互动过程。

相关问题