在c#中以管理员模式运行方法的最佳方法是什么?

时间:2014-02-17 15:01:06

标签: c# methods admin

我有一个与文件系统一起使用的程序,需要某些方法才能以管理员身份运行。我无法将自己运行的应用程序作为管理员运行,因为我需要在表单上使用拖放功能。我想一个方法不能用管理员权限执行。我真的不想为一种方法制作一个花药可执行文件。如果我确实创建了另一个可执行文件,那么通过应用程序传递多个参数并重定向输出的最佳方法是什么?我希望我正确地说明这一点,并使我自己清楚。

3 个答案:

答案 0 :(得分:4)

您无法以管理员身份运行单个方法。但是,您可以在方法开始时模拟具有管理员权限的用户,以其他用户身份执行某些代码,然后返回原始用户。

以下问题的接受答案列出了一些选项:How do you do Impersonation in .NET?


在回答上述相关问题时,Matt Johnson还展示了一些无忧无虑的代码,他显然也将其作为DLL发布到GitHub,在那里你可以下载并使用它。

答案 1 :(得分:0)

您唯一的选择是:

  1. 以管理员身份运行整个程序
  2. 当用户想要执行管理功能时,以管理员身份重新启动您的程序
  3. 重新考虑您的设计方法,以便您的方法不再需要成为管理员
  4. 使用某种形式的IPC来启动第二个被提升的应用并为您提出请求。
  5. 对于IPC路由,我所知道的最简单的方法是使用WCF with named pipes,您只需像处理代码中的任何其他类一样处理WCF通信,只需通过普通函数进行通信。

答案 2 :(得分:0)

如果我理解正确,您需要程序以提升模式启动。 最简单的方法是将其指定为应用程序清单文件中的一项要求。

要向您的应用添加清单,您可以按以下步骤操作:

  1. 右键单击您的项目
  2. 添加 - >新商品 - >应用程序清单文件
  3. 在新的.manifest文件中,将<requestedExecutionLevel level="asInvoker" uiAccess="false" />替换为<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  4. 确保将应用程序配置为使用新清单运行,方法是: 右键单击您的项目 - &gt;属性 - &gt;应用程序选项卡 - &gt;清单
  5. 您可以阅读有关应用程序清单here的更多信息。