我正在开发一个安装程序,我想写一个只供管理员访问的文件夹。因此,我需要显示UAC对话框并以管理员身份进行身份验证。我知道我可以通过从安装程序GUI运行一个单独的可执行文件来实现这一点,但我宁愿一个允许我在应用程序中随时进行身份验证的解决方案。这在.NET中是否可行?
答案 0 :(得分:3)
您无法更改权限级别中间进程,一旦进程启动它就会停留在该权限级别。您必须使用提升的权限启动单独的进程,并使用IPC与其进行通信以更新GUI。
如果您正在编写安装程序,最好的方法是将安装程序自己的应用程序清单标记为管理权限本身,以便它在启动时请求管理员权限,因为每次都需要它。
答案 1 :(得分:0)
您必须使用此配置为Manifest
文件运行新进程:
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
答案 2 :(得分:0)
作为启动新进程的替代方法,您可以创建一个新的COM对象。
某些安装程序使用的方法与您尝试的方法类似。一个例子是foobar2000 installer。在第一个屏幕上,它询问标准(所有用户)或便携式设置的位置。如果选择标准,则会提示提升并重新启动。
因此,您最简单的选择是从用户收集数据,然后重新启动自身或其他可执行文件作为管理员来执行实际作业,并通过用户的选择传递参数。