检测Windows Server 2008或更高版本上的提升权限

Mat*_*ats 12 c# privileges administrator access-control windows-server

我有一个在Windows Server平台(2008或更高版本)上运行的C#,.Net 4.6.1 Windows窗体应用程序,它需要"以管理员身份运行".需要提升权限,因为应用程序更改了各种文件夹上的用户访问权限(如果重要,则在IIS默认网站根目录下).

我没有运气检测应用程序是否"以管理员身份运行".如果我正常启动应用程序(不是管理员),则使用以下代码

var isAdmin = WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);
Run Code Online (Sandbox Code Playgroud)

返回,true但更改目录上的某些用户访问权限的代码失败,权限不足错误.

如果我以管理员身份运行应用程序,则上面的检查也会返回true,但更改用户访问权限的工作正常.

我没有成功的其他尝试:

  • 使用GetTokenInformationadvapi32.dll中的方法,如此处所示
  • 添加一个清单文件到我设置应用requestedExecutionLevelrequireAdministrator

在此先感谢您的帮助.

Dav*_*of5 2

尝试更改已知文件夹的权限,如果出现异常,则说明该程序尚未以管理员身份运行。