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
Win32_Printer.mof
DLL
CIMWin32.dll

Baca juga

Win32_Printer

Konstanta Hak Istimewa

Objek Deskriptor Keamanan WMI

Mengubah Keamanan Akses pada Objek Yang Dapat Diamankan