有没有办法从操作系统请求提升权限,只是c#程序的“一部分”?
我正在使用NUnit编写一堆集成测试。我正在测试的一件事是,测试中的应用程序是否正确连接到端口843.测试在端口843打开一个侦听套接字,然后向被测应用程序抛出各种响应,并验证应用程序是否正常运行
在端口843上打开侦听套接字需要管理员权限。
我想找到能够运行此测试的最不具侵入性的方法。我可以以root / admin的身份运行整个NUnit套件,但是这会使很多东西以root身份运行,这真的不需要以root身份运行,我想阻止它。
答案 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)
答案 3 :(得分:0)
必须使用提升的权限启动进程才能拥有提升的权限。您无法“在过程中”更改您的提升状态。
解决此问题的方法是作为任务管理器。如果您运行“无法使用”并单击“显示所有用户的进程”,它基本上会杀死旧的任务管理器进程,并启动一个具有提升权限的新进程以执行此任务。