2012-12-18 72 views
2

擴展這一問題:Detect if running as Administrator with or without elevated privileges?檢測是否以提升的權限運行? (域管理員帳戶包括在內)

最投票answer作品如果帳戶「以管理員身份運行」本地管理員,但如果你使用域管理員帳戶的變量isProcessAdmin返回false。相比之下,UAC接受域管理員作爲一個有效的帳戶時提升特權(創建文件夾在C:\ WINDOWS \,以管理員身份運行等)...我如何修改UACHelper.IsProcessElevated所以它也考慮到這種情況?

回答

3

您需要通過domain values to IsInRole

// DOMAINNAME\Domain Admins RID: 0x200 
bool isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator) 
       || principal.IsInRole(0x200); 
+0

我將測試這種方法的情況下IsUacEnabled ==假的,回來報告,但什麼情況下IsUacEnabled == true其中返回假行是這樣的:bool isProcessAdmin = elevationResult == TOKEN_ELEVATION_TYPE.TokenElevationTypeFull; – VSP

+0

with isUacEnabled == false此解決方案不起作用。我以UAC禁用的管理員身份檢查了變量,它們是:principal.Identity.AuthenticationType:NTLM,principal.Identity.IsAuthenticated:True,principal.Identity.Name :(當前沒有管理員權限的用戶) – VSP

+0

@ ase69s:如果UAC被禁用......那麼誰在乎,因爲沒有「高架」的概念? – user7116

相關問題