Share via


WindowsPrincipal.IsInRole Metode

Definisi

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows tertentu.

Overload

IsInRole(Int32)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan pengidentifikasi relatif (RID) yang ditentukan.

IsInRole(SecurityIdentifier)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan pengidentifikasi keamanan (SID) yang ditentukan.

IsInRole(WindowsBuiltInRole)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan yang ditentukan WindowsBuiltInRole.

IsInRole(String)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan nama yang ditentukan.

Keterangan

Ada empat kelebihan beban untuk metode ini. Untuk alasan performa, IsInRole(SecurityIdentifier) kelebihan beban sangat disarankan.

IsInRole(Int32)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan pengidentifikasi relatif (RID) yang ditentukan.

public:
 virtual bool IsInRole(int rid);
public virtual bool IsInRole (int rid);
override this.IsInRole : int -> bool
abstract member IsInRole : int -> bool
override this.IsInRole : int -> bool
Public Overridable Function IsInRole (rid As Integer) As Boolean

Parameter

rid
Int32

RID grup pengguna Windows untuk memeriksa status keanggotaan utama.

Mengembalikan

true jika prinsipal saat ini adalah anggota grup pengguna Windows yang ditentukan, yaitu, dalam peran tertentu; jika tidak, false.

Contoh

Contoh kode berikut menunjukkan penggunaan IsInRole metode . WindowsBuiltInRole Enumerasi digunakan sebagai sumber untuk RID yang mengidentifikasi peran bawaan. RID digunakan untuk menentukan peran prinsipal saat ini.

public:
   static void DemonstrateWindowsBuiltInRoleEnum()
   {
      AppDomain^ myDomain = Thread::GetDomain();

      myDomain->SetPrincipalPolicy( PrincipalPolicy::WindowsPrincipal );
      WindowsPrincipal^ myPrincipal = dynamic_cast<WindowsPrincipal^>(Thread::CurrentPrincipal);

      Console::WriteLine( "{0} belongs to: ", myPrincipal->Identity->Name );

      Array^ wbirFields = Enum::GetValues( WindowsBuiltInRole::typeid );

      for each ( Object^ roleName in wbirFields )
      {
         try
         {
            Console::WriteLine( "{0}? {1}.", roleName,
               myPrincipal->IsInRole(  *dynamic_cast<WindowsBuiltInRole^>(roleName) ) );
         }
         catch ( Exception^ ) 
         {
            Console::WriteLine( "{0}: Could not obtain role for this RID.",
               roleName );
         }
      }
   }
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{
    public static void DemonstrateWindowsBuiltInRoleEnum()
    {
        AppDomain myDomain = Thread.GetDomain();

        myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
        Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString());
        Array wbirFields = Enum.GetValues(typeof(WindowsBuiltInRole));
        foreach (object roleName in wbirFields)
        {
            try
            {
                // Cast the role name to a RID represented by the WindowsBuildInRole value.
                Console.WriteLine("{0}? {1}.", roleName,
                    myPrincipal.IsInRole((WindowsBuiltInRole)roleName));
                Console.WriteLine("The RID for this role is: " + ((int)roleName).ToString());
            }
            catch (Exception)
            {
                Console.WriteLine("{0}: Could not obtain role for this RID.",
                    roleName);
            }
        }
        // Get the role using the string value of the role.
        Console.WriteLine("{0}? {1}.", "Administrators",
            myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
        Console.WriteLine("{0}? {1}.", "Users",
            myPrincipal.IsInRole("BUILTIN\\" + "Users"));
        // Get the role using the WindowsBuiltInRole enumeration value.
        Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
           myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
        // Get the role using the WellKnownSidType.
        SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
        Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
    }

    public static void Main()
    {
        DemonstrateWindowsBuiltInRoleEnum();
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal

Class SecurityPrincipalDemo

    Public Shared Sub DemonstrateWindowsBuiltInRoleEnum()
        Dim myDomain As AppDomain = Thread.GetDomain()

        myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
        Dim myPrincipal As WindowsPrincipal = CType(Thread.CurrentPrincipal, WindowsPrincipal)
        Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString())
        Dim wbirFields As Array = [Enum].GetValues(GetType(WindowsBuiltInRole))
        Dim roleName As Object
        For Each roleName In wbirFields
            Try
                ' Cast the role name to a RID represented by the WindowsBuildInRole value.
                Console.WriteLine("{0}? {1}.", roleName, myPrincipal.IsInRole(CType(roleName, WindowsBuiltInRole)))
                Console.WriteLine("The RID for this role is: " + Fix(roleName).ToString())

            Catch
                Console.WriteLine("{0}: Could not obtain role for this RID.", roleName)
            End Try
        Next roleName
        ' Get the role using the string value of the role.
        Console.WriteLine("{0}? {1}.", "Administrators", myPrincipal.IsInRole("BUILTIN\" + "Administrators"))
        Console.WriteLine("{0}? {1}.", "Users", myPrincipal.IsInRole("BUILTIN\" + "Users"))
        ' Get the role using the WindowsBuiltInRole enumeration value.
        Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator, myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
        ' Get the role using the WellKnownSidType.
        Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
        Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))

    End Sub

    Public Shared Sub Main()
        DemonstrateWindowsBuiltInRoleEnum()

    End Sub
End Class

Keterangan

Saat menguji informasi peran yang baru dibuat, seperti pengguna baru atau grup baru, penting untuk keluar dan masuk untuk memaksa penyebaran informasi peran dalam domain. Tidak melakukannya dapat menyebabkan IsInRole pengujian kembali false.

Untuk alasan performa, IsInRole(SecurityIdentifier) kelebihan beban direkomendasikan sebagai kelebihan beban yang lebih disukai untuk menentukan peran pengguna.

Catatan

Di Windows Vista, Kontrol Akun Pengguna (UAC) menentukan hak istimewa pengguna. Jika Anda adalah anggota grup Administrator Bawaan, Anda diberi dua token akses run-time: token akses pengguna standar dan token akses administrator. Secara default, Anda berada dalam peran pengguna standar. Saat Anda mencoba melakukan tugas yang memerlukan hak istimewa administratif, Anda dapat meningkatkan peran Anda secara dinamis dengan menggunakan kotak dialog Persetujuan. Kode yang menjalankan IsInRole metode tidak menampilkan kotak dialog Persetujuan. Kode mengembalikan false jika Anda berada dalam peran pengguna standar, bahkan jika Anda berada di grup Administrator Bawaan. Anda dapat meningkatkan hak istimewa sebelum menjalankan kode dengan mengklik kanan ikon aplikasi dan menunjukkan bahwa Anda ingin menjalankan sebagai administrator.

Pengidentifikasi relatif (RID) adalah komponen pengidentifikasi keamanan (SID) grup pengguna Windows dan didukung untuk membantu mencegah masalah pelokalan lintas platform. Banyak akun pengguna, grup lokal, dan grup global memiliki nilai RID default yang konstan di semua versi Windows.

Misalnya, RID untuk peran BUILTIN\Administrators 0x220. Menggunakan 0x220 sebagai parameter input untuk IsInRole metode menghasilkan true dikembalikan jika prinsipal saat ini adalah administrator.

Tabel berikut mencantumkan nilai RID default.

Pengguna bawaan RID
DOMAINNAME\Administrator 0x1F4
DOMAINNAME\Guest 0x1F5
Grup global bawaan RID
DOMAINNAME\Domain Admins 0x200
DOMAINNAME\Pengguna Domain 0x201
DOMAINNAME\Tamu Domain 0x202
Grup lokal bawaan RID
BUILTIN\Administrators 0x220
BUILTIN\Users 0x221
BUILTIN\Guests 0x222
BUILTIN\Operator Akun 0x224
Operator BUILTIN\Server 0x225
Operator BUILTIN\Print 0x226
Operator BUILTIN\Backup 0x227
BUILTIN\Replicator 0x228

Berlaku untuk

IsInRole(SecurityIdentifier)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan pengidentifikasi keamanan (SID) yang ditentukan.

public:
 virtual bool IsInRole(System::Security::Principal::SecurityIdentifier ^ sid);
public virtual bool IsInRole (System.Security.Principal.SecurityIdentifier sid);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual bool IsInRole (System.Security.Principal.SecurityIdentifier sid);
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member IsInRole : System.Security.Principal.SecurityIdentifier -> bool
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
Public Overridable Function IsInRole (sid As SecurityIdentifier) As Boolean

Parameter

sid
SecurityIdentifier

SecurityIdentifier Yang secara unik mengidentifikasi grup pengguna Windows.

Mengembalikan

true jika prinsipal saat ini adalah anggota grup pengguna Windows yang ditentukan; jika tidak, false.

Atribut

Pengecualian

sidadalah null.

Windows mengembalikan kesalahan Win32.

Contoh

Contoh kode berikut menunjukkan penggunaan WindowsPrincipal.IsInRole(SecurityIdentifier) metode . Nilai BuiltinAdministratorsSid enumerasi digunakan untuk menentukan apakah prinsipal saat ini adalah administrator. Untuk contoh kode lengkap, lihat WindowsPrincipal.IsInRole(Int32) metode .

// Get the role using the WellKnownSidType.
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
    ' Get the role using the WellKnownSidType.
    Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
    Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))

End Sub

Keterangan

Secara SecurityIdentifier unik mengidentifikasi pengguna atau grup di Windows. Saat menguji informasi peran yang baru dibuat, seperti pengguna baru atau grup baru, penting untuk keluar dan masuk untuk memaksa penyebaran informasi peran dalam domain. Tidak melakukannya dapat menyebabkan IsInRole pengujian kembali false.

Catatan

Di Windows Vista, Kontrol Akun Pengguna (UAC) menentukan hak istimewa pengguna. Jika Anda adalah anggota grup Administrator Bawaan, Anda diberi dua token akses run-time: token akses pengguna standar dan token akses administrator. Secara default, Anda berada dalam peran pengguna standar. Saat Anda mencoba melakukan tugas yang memerlukan hak istimewa administratif, Anda dapat meningkatkan peran Anda secara dinamis dengan menggunakan kotak dialog Persetujuan. Kode yang menjalankan IsInRole metode tidak menampilkan kotak dialog Persetujuan. Kode mengembalikan false jika Anda berada dalam peran pengguna standar, bahkan jika Anda berada di grup Administrator Bawaan. Anda dapat meningkatkan hak istimewa sebelum menjalankan kode dengan mengklik kanan ikon aplikasi dan menunjukkan bahwa Anda ingin menjalankan sebagai administrator.

Untuk alasan performa, ini adalah kelebihan beban yang lebih disukai untuk menentukan peran pengguna.

Berlaku untuk

IsInRole(WindowsBuiltInRole)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan yang ditentukan WindowsBuiltInRole.

public:
 virtual bool IsInRole(System::Security::Principal::WindowsBuiltInRole role);
public virtual bool IsInRole (System.Security.Principal.WindowsBuiltInRole role);
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
abstract member IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
Public Overridable Function IsInRole (role As WindowsBuiltInRole) As Boolean

Parameter

role
WindowsBuiltInRole

Salah WindowsBuiltInRole satu nilai.

Mengembalikan

true jika prinsipal saat ini adalah anggota grup pengguna Windows yang ditentukan; jika tidak, false.

Pengecualian

role bukan nilai yang valid WindowsBuiltInRole .

Contoh

Contoh berikut menggunakan WindowsBuiltInRole enumerasi digunakan untuk menentukan apakah prinsipal saat ini adalah Administrator. Untuk contoh kode lengkap, lihat WindowsPrincipal.IsInRole(Int32) metode .

// Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
   myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
' Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator, myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))

Keterangan

Saat menguji informasi peran yang baru dibuat, seperti pengguna baru atau grup baru, penting untuk keluar dan masuk untuk memaksa penyebaran informasi peran dalam domain. Tidak melakukannya dapat menyebabkan IsInRole pengujian kembali false.

Untuk alasan performa, IsInRole(SecurityIdentifier) kelebihan beban direkomendasikan sebagai kelebihan beban yang lebih disukai untuk menentukan peran pengguna.

Catatan

Di Windows Vista, Kontrol Akun Pengguna (UAC) menentukan hak istimewa pengguna. Jika Anda adalah anggota grup Administrator Bawaan, Anda diberi dua token akses run-time: token akses pengguna standar dan token akses administrator. Secara default, Anda berada dalam peran pengguna standar. Saat Anda mencoba melakukan tugas yang memerlukan hak istimewa administratif, Anda dapat meningkatkan peran Anda secara dinamis dengan menggunakan kotak dialog Persetujuan. Kode yang menjalankan IsInRole metode tidak menampilkan kotak dialog Persetujuan. Kode mengembalikan false jika Anda berada dalam peran pengguna standar, bahkan jika Anda berada di grup Administrator Bawaan. Anda dapat meningkatkan hak istimewa sebelum menjalankan kode dengan mengklik kanan ikon aplikasi dan menunjukkan bahwa Anda ingin menjalankan sebagai administrator.

Berlaku untuk

IsInRole(String)

Menentukan apakah prinsipal saat ini termasuk dalam grup pengguna Windows dengan nama yang ditentukan.

public:
 override bool IsInRole(System::String ^ role);
public:
 virtual bool IsInRole(System::String ^ role);
public override bool IsInRole (string role);
public virtual bool IsInRole (string role);
override this.IsInRole : string -> bool
abstract member IsInRole : string -> bool
override this.IsInRole : string -> bool
Public Overrides Function IsInRole (role As String) As Boolean
Public Overridable Function IsInRole (role As String) As Boolean

Parameter

role
String

Nama grup pengguna Windows yang akan diperiksa keanggotaannya.

Mengembalikan

true jika prinsipal saat ini adalah anggota grup pengguna Windows yang ditentukan; jika tidak, false.

Penerapan

Contoh

Contoh kode berikut menunjukkan penggunaan WindowsPrincipal.IsInRole(String) metode .

String BUILTIN\Administrators dan BUILTIN\Users digunakan untuk menentukan apakah prinsipal saat ini adalah administrator atau pengguna. Untuk contoh kode lengkap, lihat WindowsPrincipal.IsInRole(Int32) metode .

// Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators",
    myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
Console.WriteLine("{0}? {1}.", "Users",
    myPrincipal.IsInRole("BUILTIN\\" + "Users"));
' Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators", myPrincipal.IsInRole("BUILTIN\" + "Administrators"))
Console.WriteLine("{0}? {1}.", "Users", myPrincipal.IsInRole("BUILTIN\" + "Users"))

Keterangan

Saat menguji informasi peran yang baru dibuat, seperti pengguna baru atau grup baru, penting untuk keluar dan masuk untuk memaksa penyebaran informasi peran dalam domain. Tidak melakukannya dapat menyebabkan IsInRole tes kembali false.

Untuk alasan performa, IsInRole(SecurityIdentifier) kelebihan beban direkomendasikan sebagai kelebihan beban yang lebih disukai untuk menentukan peran pengguna.

Catatan

Di Windows Vista, Kontrol Akun Pengguna (UAC) menentukan hak istimewa pengguna. Jika Anda adalah anggota grup Administrator Bawaan, Anda diberi dua token akses run-time: token akses pengguna standar dan token akses administrator. Secara default, Anda berada dalam peran pengguna standar. Saat Anda mencoba melakukan tugas yang memerlukan hak istimewa administratif, Anda dapat meningkatkan peran Anda secara dinamis dengan menggunakan kotak dialog Persetujuan. Kode yang menjalankan IsInRole metode tidak menampilkan kotak dialog Persetujuan. Kode mengembalikan false jika Anda berada dalam peran pengguna standar, bahkan jika Anda berada di grup Administrator Bawaan. Anda dapat meningkatkan hak istimewa sebelum menjalankan kode dengan mengklik kanan ikon aplikasi dan menunjukkan bahwa Anda ingin menjalankan sebagai administrator.

Untuk peran bawaan, role string harus dalam bentuk "BUILTIN\RoleNameHere". Misalnya, untuk menguji keanggotaan dalam peran administrator Windows, string yang mewakili peran harus "BUILTIN\Administrators". Perhatikan bahwa garis miring terbalik mungkin perlu diloloskan. Tabel berikut mencantumkan peran bawaan.

Catatan

Ejaan untuk peran BUILTIN dalam format string berbeda dari ejaan yang digunakan dalam WindowsBuiltInRole enumerasi. Misalnya, ejaan untuk administrator dalam enumerasi adalah "Administrator", bukan "Administrator". Saat menggunakan kelebihan beban ini, gunakan ejaan untuk peran dari tabel berikut.

Grup lokal bawaan
BUILTIN\Administrators
BUILTIN\Users
BUILTIN\Guests
BUILTIN\Operator Akun
Operator BUILTIN\Server
Operator BUILTIN\Print
Operator BUILTIN\Backup
BUILTIN\Replicator

Untuk peran khusus komputer, role string harus dalam bentuk "MachineName\RoleNameHere".

Untuk peran khusus domain, role string harus dalam bentuk "DomainName\RoleNameHere"; misalnya, "SomeDomain\Domain Users".

Catatan

Dalam .NET Framework versi 1.0, role parameter peka huruf besar/kecil. Dalam .NET Framework versi 1.1 dan yang lebih baru, role parameter tidak peka huruf besar/kecil.

Lihat juga

Berlaku untuk