我有一个在Windows Server平台(2008或更高版本)上运行的C#,。Net 4.6.1 Windows窗体应用程序,它需要以管理员身份运行"。需要提升权限,因为应用程序更改了各种文件夹上的用户访问权限(如果重要,则在IIS默认网站根目录下)。
我没有运气检测应用程序是否已经"以管理员身份运行"。如果我正常启动应用程序(即不作为管理员),则使用以下代码
var isAdmin = WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);
返回true
,但更改目录上某些用户访问权限的代码失败,权限错误不足。
如果我以管理员身份运行该应用程序,上面的检查也会返回true
,但更改用户访问权限的工作正常。
我没有成功的其他尝试:
GetTokenInformation
方法
requestedExecutionLevel
设置为requireAdministrator
提前感谢您的帮助。
答案 0 :(得分:2)
尝试更改已知文件夹的权限,如果有异常,则表示该程序尚未以管理员身份运行。
答案 1 :(得分:2)
以下必须有效(我希望如此;我有一个Windows客户端并且它与我一起工作)。
var Identity = WindowsIdentity.GetCurrent();
var Principal = new WindowsPrincipal(Identity);
bool IsAdmin = Principal.IsInRole(WindowsBuiltInRole.Administrator);