以管理员权限运行c#程序的一部分
问题描述:
有没有办法从操作系统请求提升权限,因为“只是c#程序的一部分”?以管理员权限运行c#程序的一部分
我在写一堆使用NUnit的集成测试。我正在测试的一件事是如果被测试的应用程序正确连接到端口843.测试将在端口843处打开一个监听套接字,然后向测试中的应用程序抛出各种响应,并验证应用程序的行为是否正确。
但是,在端口843上打开侦听套接字需要管理员权限。
我想找到能够运行此测试的最不干扰的方式。我可以以root/admin身份运行整个NUnit套件,但是这会让很多东西以root身份运行,并不需要以root身份运行,这是我想要阻止的。
答
没有。海拔全是或没有。通常情况下,如果需要提升,应用会将自身引导到提升状态。
答
如果需要下面的代码将有助于你找出如果登录用户当前为admin与否:
using System;
using System.Security.Principal;
class Test
{
public static void Main()
{
if (new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator))
{
Console.WriteLine("I am an admin.");
}
}
}
答
进程具有以提升的权限有提升的权限启动。您无法在“正在处理”中更改您的提升状态。
解决此问题的一种方法是作为任务管理器。如果你运行这个“未升级”并点击“为所有用户显示进程”,它基本上会杀死旧的任务管理器进程,并使用提升的权限启动一个新进程来完成这项工作。
我可能会被误认为冒名顶替,但不会通过UAC。没有?我知道我曾经在xp和nt上使用它,但不是v + – 2010-02-16 09:16:11
不是我。诺言。 ;-) – 2010-02-16 09:22:28
我一直在寻找这个答案,我认为有可能只提升一个线程来执行一些功能,但我真的不知道如何 – 2012-07-30 17:11:24