如何强制用户在WinForms中的用户管理员帐户

Paw*_*jda 6 .net c# windows windows-7 winforms

我有简单的WinForms应用程序,其中修改Windows注册表.问题是在Vista/Windows 7中我需要强制用户切换到管理员.

我不想强制用户以管理员身份运行表单启动应用程序.当有必要写入注册表时,我希望他这样做.

最好的情况是,当用户需要"切换"到管理员以便没有必要以管理员身份运行时,可以直接获得出现在许多设置中的相同消息.

我如何在.Net中实现这一目标?

Kat*_*ory 4

如果应用程序有时不执行注册表操作而有时执行注册表操作,那么分区是一种可行的方法。分区的三个关键是(1)在第二个 exe 上有一个清单,正如 Ho 所说,(2)在按钮/菜单项上放置一个盾牌,以便用户期望提升,以及(3)使用 ShellExecute 启动它(在调用 Start,将 UseShellExecuteFlag 设置为 true)以便使用清单。

但是,在麻烦地拆分您的应用程序之前,我会问两个问题。首先,它是否曾经用于非管理目的,或者每个用户总是“单击该按钮”并且需要提升?如果是这样,那么只需将管理清单放在应用程序上,不要对其进行分区。其次,您确定需要写入注册表的该部分吗?你能把你的钥匙移到 HKCU 下的某个地方吗?如果可以的话,那么你就不再需要提升,每个人都会更快乐。我总是喜欢首先考虑这些可能性,因为它们意味着比分区更少的代码和更少的测试。