mar*_*d13 10 .net c# uac windows-7
在我的C#应用程序中,我需要检查当前用户是否是Administrators组的成员.它需要与Windows XP和Windows 7兼容.
目前,我使用以下代码:
bool IsAdministrator
{
get
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是如果应用程序在Windows 7上运行且UAC作为非提升管理员打开,则此方法返回false.即使应用程序作为非提升管理员运行,如何确定用户是否为管理员?
And*_*bel 18
有一个Win32 API GetTokenInformation可用于检查当前令牌.如果返回的令牌是拆分令牌,则它可能是在非升级模式下运行的管理员用户.
GetTokenInformation有一个输出参数tokenInformation,它取三个值之一:
TokenElevantionTypeLimited的值指示用户正在使用具有有限权限的拆分令牌运行.提升时,返回TokenElevationTypeFull值.非管理员用户的值为TokenElevationTypeDefault.
在http://www.davidmoore.info/2011/06/20/how-to-check-if-the-current-user-is-an-administrator-even-if-uac上有一个完整的C#代码示例-is-ON /
| 归档时间: |
|
| 查看次数: |
5997 次 |
| 最近记录: |