我有一些适用于大多数 Windows 版本的代码来检测当前用户是否以管理员身份运行。我看到我们的客户使用组策略的问题,这不起作用。现在我已将我的工作站升级到 Windows 8,并且代码不再有效。这是代码:
[DllImport("advapi32.dll")]
private static extern int LogonUser(String lpszUserName, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
private const int Logon32LogonInteractive = 2;
private const int Logon32ProviderDefault = 0;
public void Run() {
var _token;
LogonUser(Username, Domain, Password, Logon32LogonInteractive, Logon32ProviderDefault, ref _token);
_windowsIdentity = new WindowsIdentity(_token);
WindowsPrincipal myPrincipal = new WindowsPrincipal(_windowsIdentity);
var isAdmin = myPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
}
在这种情况下,当 isAdmin 应该为真时,它是假的。如果有人知道进行此检查的正确方法,该方法适用于所有版本的 Windows,那就太好了。如果有人知道如何更改此代码以便它在使用组策略的域中工作,那就更好了。
我试图从我的班级复制适当的代码。显然这不会编译,但如果我错过了什么,请告诉我。
谢谢!