流程是否有可能将自身从提升的UAC权限降低回标准用户?如果没有,升级过程可以使用标准用户令牌启动其副本然后自行终止吗?任何代码示例(C#首选)?
详细说明:
问题: - 用户安装我的产品(用C#编写) - 安装程序将其UAC权限提升为admin - 最后安装程序启动我的exe - exe继承了admin的提升权限 - exe挂载在Windows资源管理器中不可见的网络驱动器(以常规权限运行)
我考虑的选项: 1)将安装程序分解为外部exe和内部exe,它们以提升的权限运行。安装包含1000多行NSIS代码,我对NSIS一无所知 2)安装具有较低权限的驱动器。如果我这样做,Win Explorer可以看到驱动器,但我的exe不能 3)将EnableLinkedConnection注册表选项设置为1.这是禁止的,因为它在安装过程中需要重新启动PC。
请帮忙!
塞吉
答案 0 :(得分:3)
单向:http://www.codeproject.com/KB/vista-security/VistaElevator.aspx
另一种方式(在前一篇文章的最新评论中提到):http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how/
答案 1 :(得分:1)
在所有配置中都不可能实现这一点,有像Kyle链接这样的丑陋黑客,但最终,没有真正的方法来降低你的权利。既然你提到了NSIS,就会发现它确实有一个名为UAC的插件来执行内部/外部实例的舞蹈,它并不漂亮,但确实有效。
答案 2 :(得分:1)
如果你对" hack"回答,关于NSIS的另一个blog post显示了一种更简单的方法。只需使用explorer.exe
启动另一个进程似乎即可工作。*
C#只是
Process.Start("explorer.exe", YourProgram.ExecutablePath)
请注意,即使您是WaitForExit()
资源管理器,您的程序可能还没有完成!
*还要注意其中一条评论:"不幸的是,Windows Shell团队已经回复了" Explorer.exe AppName.exe"的当前行为。是一个错误,可能无法在Windows的未来更新/版本中使用。应用程序不应该依赖它。"