我正在尝试使用 c# 和 .NET 3.5 发现用户是否是 windows7/windows8 中的来宾。
我已经按照这里的答案并尝试调用WindowsIdentity.GetCurrent().IsGuest但它不起作用在来宾帐户(在 windows7 和 windows8 上)上也返回 false。
我打印了 WindowsIdentity.GetCurrent().User.Value 和 WindowsIdentity.GetCurrent().Name,两者都是正确的:
WindowsIdentity.GetCurrent().Name = ComputerName\Guest
WindowsIdentity.GetCurrent().User.Value = S-1-5-21/Domain/501
将可执行文件编译为 .NET 4.5 时,WindowsIdentity.GetCurrent().IsGuest 在来宾帐户上返回 true(否则返回 false)。
根据 msdn 文档,IsGuest 应该适用于 .net 3.5 和 4.5。有什么我想念的吗?
有没有其他方法可以知道用户是否是客人?
更新:
以下代码有效:
public static bool IsGuest
{
get
{
try
{
var identity = WindowsIdentity.GetCurrent();
if (identity == null)
{
return false;
}
var pricipal = new WindowsPrincipal(identity);
return pricipal.IsInRole(WindowsBuiltInRole.Guest);
}
catch
{
return false;
}
}
}