WindowsPrincipal.IsInRole Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
sid
adalah 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 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.
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 ini 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 role
lebih baru, parameternya tidak peka huruf besar/kecil.