簡體   English   中英

基於Windows當前用戶的C#應用​​程序授權

[英]c# application authorization based on Windows current user

我編寫了一個小應用程序,我需要添加一些授權安全提示。

簡單示例:我有一個包含兩個按鈕的WinForm:btnAdd和btnDelete。 我要那個:

  • 如果當前用戶在管理員組中,則將同時顯示上面的兩個按鈕

  • 否則(如果不在管理員組中(如猜測帳戶),則僅顯示btnAdd。

我怎樣才能做到這一點

您應該能夠構造WindowsPrincipal對象,然后僅檢查用戶是否具有您期望的角色,然后使用返回值將按鈕設置為可見。 像下面這樣

using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
{
    WindowsPrincipal principal = new WindowsPrincipal(identity);

    // using WindowsBuiltInRole.Administrator or "BUILTIN\\Administrators" should work
    btnAdd.Visible = principal.IsInRole(WindowsBuiltInRole.Administrator);
}

經過更新的代碼有效,我已經在本地管理員那里進行了測試,因為您要測試當前用戶,因此WindowsIdentity.GetCurrent()實際上更干凈。

如果需要確認您是否是計算機的管理員,則可以通過MMC檢查組成員身份,但是如果涉及到任何域組並且您無權訪問,則無法檢查此內容。通過MMC除非您有權訪問AD。

一種確認用戶是否為組成員的可靠方法是在命令提示符窗口中運行以下命令

獲取本地管理員組的成員:

net localgroup administrators

獲取域組的成員:例如,如果mydomain\\WorkstationAdmins是本地Administrators組的成員,而userIdmydomain \\ WorkstationAdmins (因此是wokstation的管理員)的成員,則這是必需的

net group "WorkstationAdmins" /domain

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM