3

我正在开发一个在单击按钮后需要管理员权限的项目。目前使用C#VB.NET。您的回答语言取决于您,但如果使用其中一种语言会更好。:)

我已经尝试了以下方法:

  • “runas”动词带有一个新进程,但问题是它重新启动应用程序,这意味着丢失所有当前进度和变量值。
  • 编辑清单文件,但我“不想强迫”用户以管理员身份运行应用程序。

如前所述,只有在单击按钮时才需要管理员权限。如果它从未被点击过,那么不需要任何权利!

那么,例如,无论如何,是否可以在运行时通过 UAC 授予管理员权限。无需重新启动应用程序。

我在网上搜索过,我得到的只是上面已经提到的方法:)

注意:我在Microsoft Security Essential中发现了类似于我需要的东西,它能够在不启动应用程序的新实例的情况下授予管理员权限。

MSE可以做到! 说明:在运行MSE时,默认情况下,您会在历史选项卡中找到第一个单选框被选中。将此更改为任何其他选项并授予权限不会重新启动应用程序,因此保持当前状态

非常感谢任何帮助。

4

1 回答 1

11

在进程的生命周期内无法提升。您的进程是否运行提升是在进程启动时决定的。

我在 Microsoft Security Essential 中发现了类似于我需要的东西,它能够在不启动应用程序的新实例的情况下授予管理员权限。

不,MSE 将在单独的进程中执行提升的任务。

您无需关闭现有流程并启动新流程。您需要做的是使用单独的流程来执行需要提升的任务。该单独的过程不需要显示任何 UI。提升的进程可以保持隐藏状态并与显示 UI 的进程通信。实现此目的的最简洁方法是将提升的任务放在进程外 COM 服务器中并使用CoCreateInstanceAsAdmin.

于 2013-09-17T14:34:09.540 回答