これがより良い(PowerShell)方法です:https://stackoverflow.com/a/16617861/863980
1行で、次のように言うことができます(poshでコピー/貼り付けすると機能します):
(@(([ADSI]"WinNT://./Administrators,group").psbase.Invoke("Members")) | `
foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}) -contains "Administrator"
=>True
ユーザーが管理者グループに属している場合に返されます (ユーザーが管理者であることを確認するのではなく)
(注: バッククォートまたはグレイブ アクセント ` は、PowerShell ではキャリッジ リターンをエスケープします。Ruby では、C++ の system('command') などのシェル コマンドを実行します。)
したがって、Ruby では、次のように言うことができます (irb でコピー/貼り付け):
def is_current_user_local_admin?
return `powershell "(@(([ADSI]'WinNT://./Administrators,group').psbase.Invoke('Members')) | foreach {$_.GetType().InvokeMember('Name', 'GetProperty', $null, $_, $null)}) -contains 'Administrator'"`.include? "True"
end
ただし、WMIの(さらに優れた)方法はわかりません。これで、(Ruby で) 次のようなことができたはずです。
require 'win32ole'
wmi = WIN32OLE.connect('WinNT://./Administrators,group')
# don't know what should come here...