2010-08-31 41 views

回答

2

答案真的是没有,你不应该这样做。 ClickOnce应用程序安装在用户配置文件下,仅属于该用户。 THey不会也不会以全用户安装方式工作。

另外请注意,如果您双击[exe]文件(其每次更新时更改的位置),它将不会查找更新,也不会检查文件以确保它们避难没有被篡改过。换句话说,它不会作为ClickOnce应用程序运行。

我也想通过用户名和密码在查询字符串是不明智的,因为任何人运行小提琴手或查或任何其他网络流量嗅探器将能够看到的凭据。

1

你说的是需要发生一次你的代码是在多台计算机上运行时一次性的过程,还是什么?因为如果你只是想用提升的权限亲自运行一个ClickOnce应用程序,它非常简单。单击一次应用程序驻留在%LOCALAPPDATA%\ Apps \ 2.0 [ObfuscatedFolderName]。只需找到您的应用程序文件夹(时间戳应该是足够的信息),然后右键单击您的EXE并以管理员身份运行。

如果你想这样做的代码,最简单的解决办法可能是使周围的代码,在代码要求提升的权限壳launcer应用。 Here is such an example.

+0

您是否知道自动更新后应用的位置可能会更改? – Vitalik 2010-09-01 01:05:05

+0

我真正想做的事情是从不属于域(但位于同一网络)的计算机在域帐户下运行点击一次。 – Vitalik 2010-09-01 01:05:57

+0

我不相信你可以依靠保持一致的路径,没有。 – Serapth 2010-09-01 01:08:45

18

其实,这是可能的,你需要做的仅仅是在两个步骤。首先,您需要启动的ClickOnce(dfsvc.exe)与您试图冒充用户,然后就可以启动使用rundll32部署应用程序,这样的事情:

(在命令行)。 - 点击一次:

runas /user:domain\user "c:\Windows\Microsoft.NET\Framework\v4.0.30319\dfsvc.exe" 

2:启动应用:

runas /user:domain\user "rundll32 c:\Windows\System32\dfshim.dll,ShOpenVerbApplication http://someurl.com/tool.application" 

请注意,您只需要dfsvc.exe如果一旦运行ÿ您需要启动多个应用程序,一旦您关闭了所有模拟的单击应用程序,它将在一段时间后消失。

+1

这个答案拯救了我的生命!我能够使用上述技巧在两个使用NTLM身份验证的不可信域之间打开ClickOnce应用程序。 – 2013-08-02 13:11:16

+0

@Santo两次'user'? – turbanoff 2014-08-08 08:28:03

+0

@turbanoff是的,你需要做两次,否则第二个将在登录用户的上下文中启动clickonce应用程序。那是你问的吗? – Alan 2014-08-11 23:09:47