Metode SetSecurityDescriptor dari kelas Win32_Printer
Metode SetSecurityDescriptor menulis versi deskriptor keamanan yang diperbarui yang mengontrol akses ke printer. Pendeskripsi keamanan adalah instans kelas Win32_SecurityDescriptor . Untuk informasi selengkapnya, lihat Mengubah Keamanan Akses pada Objek Yang Dapat Diamankan.
Topik ini menggunakan sintaksIs Managed Object Format (MOF). Untuk informasi selengkapnya tentang menggunakan metode ini, lihat Memanggil Metode.
Sintaks
uint32 SetSecurityDescriptor(
[in] Win32_SecurityDescriptor Descriptor
);
Parameter
-
Deskriptor [in]
-
Deskriptor keamanan yang terkait dengan pencetak.
Nilai hasil
Mengembalikan salah satu nilai yang tercantum dalam daftar berikut, atau nilai yang berbeda untuk menunjukkan kesalahan. Untuk kode kesalahan tambahan, lihat Konstanta Kesalahan WMI atau WbemErrorEnum. Untuk nilai HRESULT umum, lihat Kode Kesalahan Sistem.
-
0
-
Penyelesaian berhasil.
-
2
-
Pengguna tidak memiliki akses ke informasi yang diminta.
-
8
-
Kegagalan tidak diketahui.
-
9
-
Pengguna tidak memiliki hak istimewa yang memadai untuk menjalankan metode .
-
21
-
Parameter yang ditentukan dalam panggilan metode tidak valid.
Keterangan
Instans Win32_SecurityDescriptor mewakili jenis data SECURITY_DESCRIPTOR_CONTROL dan berisi daftar kontrol akses diskresi (DACL) dan daftar kontrol akses sistem (SACL). Untuk informasi selengkapnya, lihat Daftar Kontrol Akses.
Jika SeSecurityPrivilege tidak diberikan atau diaktifkan saat mendapatkan deskriptor keamanan, maka hanya DACL yang dikembalikan dalam deskriptor keamanan yang dikembalikan. Untuk informasi selengkapnya, lihat Konstanta Hak Istimewa dan Menjalankan Operasi Istimewa.
Anda dapat memperbarui DACL dan SACL dalam instans Win32_SecurityDescriptor saat memanggil metode ini, tetapi Anda juga hanya dapat memperbarui DACL atau hanya SACL.
Nilai berikut dalam SECURITY_DESCRIPTOR_CONTROL menentukan apakah DACL, SACL, atau keduanya diperbarui.
SE_DACL_PRESENT
Menunjukkan bahwa DACL harus diperbarui. Jika ini tidak diatur, maka WMI mempertahankan nilai asli DACL.
SE_SACL_PRESENT
Menunjukkan bahwa SACL harus diperbarui. Jika ini tidak diatur, maka WMI mempertahankan nilai asli SACL. Untuk memperbarui SACL, akun harus mengaktifkan hak istimewa SeSecurityPrivilege . Untuk pembuatan skrip, nama hak istimewanya adalah SeSecurityPrivilege. Untuk informasi selengkapnya, lihat Konstanta Hak Istimewa.
Jika trustee Grup dan properti pemilik trustee bukan NULL, maka mereka diperbarui. Jika tidak, WMI mempertahankan nilai asli. Untuk informasi selengkapnya, lihat Objek Deskriptor Keamanan WMI.
Ketika SACL baru adalah NULL dalam panggilan ke metode ini, maka deskriptor keamanan SACL pada objek yang dapat diamankan target dibiarkan tidak berubah.
Contoh
Sampel kode PowerShell berikut menjelaskan cara mengatur deskriptor keamanan untuk printer.
# Specify the user or group
$user = "everyone"
# create instances of necessary classes
$SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()
$ace = ([WMIClass] "Win32_Ace").CreateInstance()
$Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()
# Translate a name of user or group to SID
$SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])
# Get binary form from SID and byte Array
[byte[]] $SIDArray = ,0 * $SID.BinaryLength
$SID.GetBinaryForm($SIDArray,0)
# Fill Trustee object parameters
$Trustee.Name = $user
$Trustee.SID = $SIDArray
# Set AccessMask which can contain following values:
# Takeownership - 524288
# ReadPermissions - 131072
# ChangePermissions - 262144
# ManageDocuments - 983088
# ManagePrinters - 983052
# Print + ReadPermissions - 131080
$ace.AccessMask = 983052
# Set AceType. Can be 0 (Allow), or 1 (Deny), or 2 (System Audit)
$ace.AceType = 0
$ace.AceFlags = 0
# Write Win32_Trustee object to Win32_Ace Trustee property
$ace.Trustee = $Trustee
# Write Win32_Ace and Win32_Trustee objects to SecurityDescriptor object
$SD.DACL = $ace
# Set SE_DACL_PRESENT control flag
$SD.ControlFlags = 0x0004
# Get printer object. For example 'CutePDF Writer' printer object
$Printer = gwmi win32_printer -filter "name = 'CutePDF Writer'"
# Enable SeSecurityPrivilege privilegies
$Printer.psbase.Scope.Options.EnablePrivileges = $true
# Invoke SetSecurityDescriptor method and write new ACE to specified
# printer ACL.
$Printer.SetSecurityDescriptor($SD)
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows Vista |
Server minimum yang didukung |
Windows Server 2008 |
Ruang nama |
Root\CIMV2 |
MOF |
|
DLL |
|
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk