如何为单击一次应用程序指定用户凭据?

时间:2010-08-31 18:47:32

标签: .net installer clickonce credentials

对于常规的.exe文件,我总是可以右键单击并选择“run as ..”。如何以类似的方式在不同的凭据下运行Click-Once应用程序?

我说的是应用程序本身,而不是安装程序。

3 个答案:

答案 0 :(得分:21)

这实际上是可行的,您只需要分两步完成。首先,您需要以您尝试模拟的用户身份启动ClickOnce(dfsvc.exe),然后您可以使用rundll32启动部署应用程序,如下所示:

(从命令行)

1.-点击一次:

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 :(得分:1)

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

如果您想在代码中执行此操作,最简单的解决方案可能是围绕您的代码创建一个shell launcer应用程序,它会在代码中请求提升的权限。 Here is such an example.

答案 2 :(得分:1)

答案真的不是,你不应该这样做。 ClickOnce应用程序安装在用户配置文件下,仅属于该用户。它不会也不会作为全用户安装。

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

我还认为在查询字符串中传递用户名和密码是不明智的,因为任何运行fiddler或charles或任何其他网络流量嗅探器的人都能看到凭据。