我有一个在Windows服务器平台(2008或更高版本)上运行的C#,.Net 4.6.1 Windows Forms 应用程序,需要以“管理员身份运行”。需要提升权限,因为该应用程序会更改各个文件夹(如果相关,则位于IIS默认 Web Site根目录下)下的用户访问权限。
我无法检测应用程序是否已以“管理员身份运行”。如果我以普通方式启动应用程序(即不是作为管理员),则以下代码
var isAdmin = WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);
返回值为true
,但更改目录中某些用户访问权限的代码失败,出现“权限不足”错误。
如果我以管理员身份运行应用程序,则上述检查也返回true
,但更改用户访问权限正常工作。
我尝试过其他方法但均未成功:
- 按此处建议使用advapi32.dll中的
GetTokenInformation
方法 - 向应用程序添加清单文件,将
requestedExecutionLevel
设置为requireAdministrator
提前感谢您的帮助。