ユーザーがc#と.NET3.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
実行可能ファイルを.NET4.5にコンパイルすると、WindowsIdentity.GetCurrent()。IsGuestはゲストアカウントでtrueを返しました(それ以外の場合はfalseを返しました)。
msdnのドキュメントによると、IsGuestは.net3.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;
}
}
}