6

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

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

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

我想找到一种干扰最小的方式来运行这个测试。我可以以 root/admin 身份运行整个 NUnit 套件,但这会使很多东西以 root 身份运行,实际上不需要以 root 身份运行,我想阻止这种情况。

4

4 回答 4

2

如果需要,下面的代码将帮助您确定当前登录的用户是否为管理员:

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.");
        }
    }
}
于 2010-02-16T09:32:30.097 回答
0

没有。海拔是全部或全部。通常,如果需要提升,应用程序会引导自身进入提升状态。

于 2010-02-16T09:12:41.943 回答
0

是的,你可以看看LogonUser函数。这是一个示例

于 2010-02-16T09:12:52.953 回答
0

必须以提升的权限启动进程才能获得提升的权限。您不能“进行中”更改您的提升状态。

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

于 2010-02-16T09:50:45.940 回答