現在、いくつかのことを行うメソッドを作成しています。
- オペレーティング システムのバージョンを確認します。
- オペレーティング システム プラットフォームを確認します。
- アカウントが null でないことを確認します。
- アカウントが適切な役割にあることを確認します。
今、私が従来のネストされたものを実装すると、それが機能する場合. 絶対に問題はありません-しかし、よりクリーンな実装であると私が信じていることのために、素敵なエラーになりました。
構文:
bool result = false;
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal role = new WindowsPrincipal(user);
result = ((Environment.OSVersion.Platform == PlatformID.Win32NT &&
Environment.OSVersion .Version.Major > 6
&& role != null && role.IsInRole(WindowsBuiltInRole.Administrator)
? true : false);
ただし、次の例外があります。
型andのオペランドに演算子
&&
を適用することはできません 。System.PlatformID
bool
なぜそれが機能しないのか、私にはよくわかりません。私はロジックを間違って実装していますか、それとも何ですか、私は本当に途方に暮れています。
この構文は機能しますが、上記の条件付きに変換すると機能しません。
if(Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion
.Version.Major > 6)
{
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal role = new WindowsPrincipal(user);
if(role != null)
{
if(role.IsInRole(WindowsBuiltInRole.Administrator))
{
return true;
}
}
return false;
}
return false;
アップデート:
ここに赤い波線が表示され、Visual Studio で上記のエラーが発生しました。
PlatformID.Win32NT && Environment.OSVersion.Version.Major > 6