使用管理员权限运行c#程序的一部分

时间:2010-02-16 09:10:25

标签: c# nunit privileges

有没有办法从操作系统请求提升权限,只是c#程序的“一部分”?

我正在使用NUnit编写一堆集成测试。我正在测试的一件事是,测试中的应用程序是否正确连接到端口843.测试在端口843打开一个侦听套接字,然后向被测应用程序抛出各种响应,并验证应用程序是否正常运行

在端口843上打开侦听套接字需要管理员权限。

我想找到能够运行此测试的最不具侵入性的方法。我可以以root / admin的身份运行整个NUnit套件,但是这会使很多东西以root身份运行,这真的不需要以root身份运行,我想阻止它。

4 个答案:

答案 0 :(得分:2)

不。海拔是全有或全无的。通常,如果需要提升,应用程序会将自身引导至提升状态。

答案 1 :(得分:1)

如果需要,下面的代码可以帮助您确定当前登录的用户是否为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.");
        }
    }
}

答案 2 :(得分:0)

是的,您可以查看LogonUser功能。这是一个sample

答案 3 :(得分:0)

必须使用提升的权限启动进程才能拥有提升的权限。您无法“在过程中”更改您的提升状态。

解决此问题的方法是作为任务管理器。如果您运行“无法使用”并单击“显示所有用户的进程”,它基本上会杀死旧的任务管理器进程,并启动一个具有提升权限的新进程以执行此任务。