Vista / 7 UAC:如何降低进程权限

时间:2010-03-30 18:42:06

标签: c# uac windows-vista samba

流程是否有可能将自身从提升的UAC权限降低回标准用户?如果没有,升级过程可以使用标准用户令牌启动其副本然后自行终止吗?任何代码示例(C#首选)?

详细说明:

问题: - 用户安装我的产品(用C#编写) - 安装程序将其UAC权限提升为admin - 最后安装程序启动我的exe - exe继承了admin的提升权限 - exe挂载在Windows资源管理器中不可见的网络驱动器(以常规权限运行)

我考虑的选项: 1)将安装程序分解为外部exe和内部exe,它们以提升的权限运行。安装包含1000多行NSIS代码,我对NSIS一无所知 2)安装具有较低权限的驱动器。如果我这样做,Win Explorer可以看到驱动器,但我的exe不能 3)将EnableLinkedConnection注册表选项设置为1.这是禁止的,因为它在安装过程中需要重新启动PC。

请帮忙!

塞吉

3 个答案:

答案 0 :(得分:3)

答案 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的未来更新/版本中使用。应用程序不应该依赖它。"