檢測是否以管理員身份運(yùn)行,是否具有提升權(quán)限?我有一個(gè)應(yīng)用程序需要檢測它是否以提升的權(quán)限運(yùn)行。我目前的代碼設(shè)置如下:static bool IsAdministrator(){
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);}這可用于檢測用戶是否是管理員,但如果以沒有提升的管理員身份運(yùn)行則無法工作。(例如在vshost.exe中)。如何判斷高程是否[已經(jīng)生效或]可能?
3 回答

紅顏莎娜
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
(提出問題六年后的新答案)
免責(zé)聲明:這只是在我的特定操作系統(tǒng)上使用我的特定用戶的特定設(shè)置時(shí)發(fā)生的事情:
using System.Security.Principal;// ... static bool IsElevated { get { return WindowsIdentity.GetCurrent().Owner .IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid); } }
因此,當(dāng)我運(yùn)行“以管理員身份運(yùn)行”時(shí),屬性get
訪問器將返回true
。正常運(yùn)行時(shí)(即使我的用戶“是”管理員,只是沒有“以管理員身份”運(yùn)行此特定應(yīng)用程序),它將返回false
。
這似乎比許多其他答案簡單得多。
我不知道是否存在失敗的情況。
PS!這也似乎沒問題:
static bool IsElevated { get { var id = WindowsIdentity.GetCurrent(); return id.Owner != id.User; } }
- 3 回答
- 0 關(guān)注
- 882 瀏覽
添加回答
舉報(bào)
0/150
提交
取消