這裏是做的更好(PowerShell的)方式:https://stackoverflow.com/a/16617861/863980
在一條線,你可以說(在高級複製/粘貼,它會工作):
(@(([ADSI]"WinNT://./Administrators,group").psbase.Invoke("Members")) | `
foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}) -contains "Administrator"
=>收益True
當用戶屬於管理員組時(與檢查用戶IS管理員相反)
(注意:反向或重音重音在PowerShell中轉義回車,在Ruby中執行shell命令,如C++的系統('命令「)..)
所以在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...
這隻驗證用戶名是否在Admin組中 - 它不檢測當前會話是否具有管理權限。例如,在使用UAC的Win 7上,默認情況下,命令提示符以非管理員身份運行,並且上述命令將錯誤地將會話報告爲Admin。請參閱我的解決方案,以獲得更可靠的東西 – 2011-07-14 10:25:00