Direktif INF AddReg
Direktif AddReg mereferensikan satu atau beberapa inf-writer-defined _add-registry-sections* yang digunakan untuk memodifikasi atau membuat informasi registri.
[DDInstall] |
[DDInstall.HW] |
[DDInstall.CoInstallers] |
[ClassInstall32] |
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] | (Windows 10 version 1709 and later versions of Windows)
[install-interface-section] |
[service-install-section] |
[event-log-install] |
[add-interface-section]
AddReg=add-registry-section[,add-registry-section] ...
Setiap add-registry-section dapat memiliki entri untuk melakukan hal berikut:
Tambahkan kunci baru, mungkin dengan entri nilai awal, ke registri.
Tambahkan entri nilai baru ke kunci registri yang ada.
Ubah entri nilai yang ada dari kunci tertentu dalam registri.
Setiap bagian add-registry bernama yang direferensikan oleh direktif AddReg memiliki format berikut:
[add-registry-section]
reg-root,[subkey],[value-entry-name],[flags],[value][,[value]]
reg-root,[subkey],[value-entry-name],[flags],[value][,[value]]
...
[[add-registry-section.security]
"security-descriptor-string"]
Add-registry-section dapat memiliki sejumlah entri, masing-masing pada baris terpisah. INF juga dapat berisi satu atau beberapa bagian add-registry-section.security opsional, masing-masing menentukan deskriptor keamanan yang diterapkan ke semua nilai registri yang dijelaskan dalam add-registry-section bernama.
Entri
reg-root
Mengidentifikasi akar pohon registri untuk nilai lain yang disediakan dalam entri ini. Nilainya bisa menjadi salah satu dari yang berikut ini:
HKCR
Singkatan untuk HKEY_CLASSES_ROOT
HKCU
Singkatan untuk HKEY_CURRENT_USER
HKLM
Singkatan untuk HKEY_LOCAL_MACHINE
HKU
Singkatan untuk HKEY_USERS
HKR
Akar relatif, di mana kunci yang ditentukan dengan menggunakan singkatan ini relatif terhadap kunci registri yang terkait dengan bagian INF tempat direktif AddReg ini muncul, seperti yang ditunjukkan dalam tabel berikut.
Bagian INF Berisi Direktif AddReg | Kunci Registri Yang Direferensikan oleh HKR |
---|---|
Bagian INF DDInstall | Kunci perangkat lunak perangkat |
INF DDInstall. Bagian HW | Kunci perangkat keras perangkat |
INF [service-install-section] section | Kunci Layanan |
INF [event-log-install] section | Kunci EventLog |
INF [add-interface-section] section | Kunci registri antarmuka perangkat |
Catatan
HKR tidak dapat digunakan dalam bagian add-registry yang direferensikan dari bagian INF DefaultInstall.
Untuk informasi selengkapnya tentang informasi driver yang disimpan di bawah akar HKEY_LOCAL_MACHINE , lihat Pohon registri dan Kunci untuk Perangkat dan Driver.
Subkunci
Nilai opsional ini, dibentuk baik sebagai token %strkey% yang ditentukan di bagian String INF atau sebagai jalur registri di bawah reg-root yang diberikan (key1\key2\key3...), menentukan salah satu hal berikut:
- Subkunjung baru yang akan ditambahkan ke registri di akhir jalur registri yang diberikan.
- Subkunjud yang ada di mana nilai tambahan yang ditentukan dalam entri ini ditulis (mungkin mengganti nilai entri nilai bernama yang ada dari subkuncing yang diberikan).
- Kedua subkuntang baru akan ditambahkan ke registri bersama dengan entri nilai awalnya.
value-entry-name
Nilai opsional ini menamai entri nilai yang ada di subkunci yang diberikan (sudah ada) atau membuat nama entri nilai baru untuk ditambahkan di subkunci yang ditentukan, apakah sudah ada atau merupakan kunci baru yang akan ditambahkan ke registri. Nilai ini dapat diekspresikan baik sebagai "string yang dikutip" atau sebagai token %strkey% yang didefinisikan di bagian String INF. (Jika ini dihilangkan untuk nilai jenis string, nama-entri-nilai adalah entri nilai default "tidak bernama" untuk kunci ini.)
Sistem operasi mendukung beberapa kata kunci nama entri nilai khusus yang ditentukan sistem. Lihat bagian akhir Keterangan ini untuk informasi selengkapnya.
Bendera
Nilai heksadesimal opsional ini, dinyatakan sebagai bitmask ORed dari nilai bendera kata rendah dan kata tinggi yang ditentukan sistem, menentukan jenis data untuk entri nilai dan/atau mengontrol operasi add-registry.
Nilai Bitmask untuk masing-masing bendera ini adalah sebagai berikut:
0x00000001 (FLG_ADDREG_BINVALUETYPE)
Nilai yang diberikan adalah data "mentah". (Nilai ini identik dengan FLG_ADDREG_TYPE_BINARY.)
0x00000002 (FLG_ADDREG_NOCLOBBER)
Cegah nilai tertentu menggantikan nilai entri nilai yang ada.
0x00000004 (FLG_ADDREG_DELVAL)
Hapus subkuntang yang diberikan dari registri, atau hapus value-entry-name yang ditentukan dari subkuntang registri yang ditentukan.
0x00000008 (FLG_ADDREG_APPEND)
Tambahkan nilai yang diberikan ke entri nilai bernama yang sudah ada. Bendera ini hanya valid jika FLG_ADDREG_TYPE_MULTI_SZ juga diatur. Nilai string yang ditentukan tidak ditambahkan jika sudah ada.
0x00000010 (FLG_ADDREG_KEYONLY)
Buat subkunci yang diberikan, tetapi abaikan nilai-entry-name dan/atau nilai yang disediakan.
0x00000020 (FLG_ADDREG_OVERWRITEONLY)
Reset ke nilai yang disediakan hanya jika nilai-entry-name yang ditentukan sudah ada di subkuntangan yang diberikan.
0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP dan versi Windows yang lebih baru.) Buat perubahan yang ditentukan dalam registri 64-bit. Jika tidak ditentukan, perubahan dilakukan pada registri asli.
0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP dan versi Windows yang lebih baru.) Ini sama dengan FLG_ADDREG_KEYONLY tetapi juga berfungsi di bagian del-registri dari arahan INF DelReg.
0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP dan versi Windows yang lebih baru.) Buat perubahan yang ditentukan dalam registri 32-bit. Jika tidak ditentukan, perubahan dilakukan pada registri asli.
0x00000000 (FLG_ADDREG_TYPE_SZ)
Entri nilai dan/atau nilai yang diberikan berjenis REG_SZ.
Catatan
Nilai ini adalah jenis default untuk entri nilai tertentu, sehingga nilai bendera dapat dihilangkan dari baris reg-root= apa pun di bagian add-registry yang beroperasi pada entri nilai jenis ini.
0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
Entri nilai dan/atau nilai yang diberikan adalah jenis registri REG_MULTI_SZ. Bidang nilai yang mengikuti dapat berupa daftar string yang dipisahkan oleh koma. Spesifikasi ini tidak memerlukan terminator NULL untuk nilai string tertentu.
0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
Nilai value-entry-name dan/atau yang diberikan adalah dari jenis registri REG_EXPAND_SZ.
0x00010001 (FLG_ADDREG_TYPE_DWORD)
Nilai dan/ataunama entri nilai yang diberikan adalah jenis registri REG_DWORD.
0x00020001 (FLG_ADDREG_TYPE_NONE)
Nilai nama entri nilai dan/atau yang diberikan adalah jenis registri REG_NONE.
nilai
Ini secara opsional menentukan nilai baru untuk nama entri nilai yang ditentukan untuk ditambahkan ke kunci registri yang diberikan.
Nilai seperti itu dapat menjadi nilai "pengganti" untuk entri nilai bernama yang ada di kunci yang ada, nilai yang akan ditambahkan (nilai bendera0x00010008) ke entri nilai bernama REG_MULTI_SZ-type yang ada di kunci yang ada, entri nilai baru yang akan ditulis ke dalam kunci yang ada, atau entri nilai awal untuk subkuntang baru yang akan ditambahkan ke registri.
Ekspresi nilai tersebut bergantung pada jenis registri yang ditentukan untuk bendera, sebagai berikut:
Nilai jenis string registri dapat diekspresikan baik sebagai "string yang dikutip" atau sebagai token %strkey% yang ditentukan di bagian String dari file INF. Nilai yang ditentukan INF seperti itu tidak harus menyertakan terminator NULL di akhir setiap string.
Nilai jenis numerik registri dapat dinyatakan sebagai heksadesimal (dengan menggunakan notasi 0x) atau angka desimal.
string deskriptor keamanan
Menentukan deskriptor keamanan, yang akan diterapkan ke semua entri registri yang dibuat oleh add-registry-section bernama. String deskriptor keamanan adalah string dengan token untuk menunjukkan komponen keamanan DACL (D:).
Jika bagian add-registry-section.security tidak ditentukan, entri registri mewarisi pengaturan keamanan kunci induk.
Jika bagian add-registry-section.security ditentukan, ACE berikut harus disertakan sehingga penginstalan dan peningkatan perangkat dan paket layanan sistem dapat terjadi:
- (A;; GA;;; SY) − Memberikan semua akses ke sistem lokal.
- (A;; GA;;; BA) − Memberikan semua akses ke administrator bawaan.
Jangan tentukan string ACE yang memberikan akses tulis kepada pengguna yang tidak memiliki hak istimewa.
Untuk informasi tentang string deskriptor keamanan, lihat Bahasa Definisi Deskriptor Keamanan (Windows). Untuk informasi tentang format string deskriptor keamanan, lihat Bahasa Definisi Deskriptor Keamanan (Windows).
Untuk informasi selengkapnya tentang cara menentukan deskriptor keamanan, lihat Membuat Penginstalan Perangkat Aman.
Keterangan
Direktif AddReg dapat ditentukan di bawah salah satu bagian yang ditunjukkan dalam pernyataan sintaks formal di atas. Direktif ini juga dapat ditentukan di bawah salah satu bagian yang ditentukan penulis INF berikut:
Bagian service-install-section atau event-log-install yang direferensikan oleh direktif AddService dalam INF DDInstall. Bagian layanan.
Bagian add-interface yang direferensikan oleh direktif AddInterface dalam INF DDInstall. Bagian antarmuka.
Bagian antarmuka penginstalan yang dirujuk di bagian INF InterfaceInstall32.
Setiap nama add-registry-section harus unik untuk file INF, tetapi dapat dirujuk oleh arahan AddReg di bagian lain dari INF yang sama. Setiap nama bagian harus mengikuti aturan umum untuk menentukan nama bagian yang dijelaskan dalam Aturan Sintaks Umum untuk File INF.
Catatan
Bit urutan bawah dari kata rendah dalam nilai bendera membedakan antara karakter dan data biner.
Untuk mewakili sejumlah jenis registri selain salah satu jenis REG_XXX yang telah ditentukan sebelumnya, tentukan nomor jenis baru dalam kata tinggi bendera ORed dengan FLG_ADDREG_BINVALUETYPE dalam kata rendahnya.
Data untuk nilai tersebut harus ditentukan dalam format biner sebagai urutan byte yang dipisahkan oleh koma. Misalnya, untuk menyimpan 16 byte data dari jenis data registri baru, seperti 0x38, sebagai entri nilai, entri bagian add-registry akan menjadi sesuatu seperti berikut ini:
HKR,,MYValue,0x00380001,1,0,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Teknik ini dapat digunakan untuk menentukan jenis registri baru untuk nilai numerik, tetapi tidak untuk nilai jenis REG_EXPAND_SZ, REG_MULTI_SZ, REG_NONE, atau REG_SZ. Untuk informasi selengkapnya tentang jenis ini, lihat Jenis nilai registri.
Kata kunci nama entri nilai khusus
Kata kunci khusus didefinisikan untuk digunakan dalam entri AddReg HKR. Format untuk entri yang menggunakan kata kunci ini adalah sebagai berikut:
[HKR,,DeviceCharacteristics,0x10001,characteristics]
[HKR,,DeviceType,0x10001,device-type]
[HKR,,Security,,security-descriptor-string]
[HKR,,UpperFilters,0x10000,service-name]
[HKR,,LowerFilters,0x10000,service-name]
[HKR,,Exclusive,0x10001,exclusive-device]
[HKR,,EnumPropPages32,,"prop-provider.dll,provider-entry-point"]
[HKR,,LocationInformationOverride,,"text-string"]
[HKR,,ResourcePickerTags,,"text-string"]
[HKR,,ResourcePickerExceptions,,"text-string"] ,
Berikut ini menjelaskan entri AddReg HKR yang menggunakan kata kunci khusus ini:
DeviceCharacteristics
Entri AddRegHKR DeviceCharacteristics menentukan karakteristik untuk perangkat. Nilai karakteristik adalah nilai numerik yang merupakan hasil dari penggunaan OR pada satu atau beberapa nilai karakteristik file FILE_*, yang didefinisikan dalam Wdm.h dan Ntddk.h.
Hanya nilai berikut yang dapat ditentukan dalam INF:
#define FILE_REMOVABLE_MEDIA 0x00000001
#define FILE_READ_ONLY_DEVICE 0x00000002
#define FILE_FLOPPY_DISKETTE 0x00000004
#define FILE_WRITE_ONCE_MEDIA 0x00000008
#define FILE_DEVICE_SECURE_OPEN 0x00000100
Untuk deskripsi nilai-nilai ini, lihat IoCreateDevice.
Nilai karakteristik, yang ditentukan dengan menggunakan entri DeviceCharacteristics , adalah ORed dengan yang ditentukan dalam setiap panggilan ke IoCreateDevice yang membuat objek perangkat pada tumpukan perangkat. Operasi OR terjadi setelah semua objek perangkat ditambahkan, tetapi sebelum perangkat dimulai.
Nilai karakteristik (termasuk nilai nol) menggantikan karakteristik perangkat di seluruh kelas yang ditentukan dalam INF penginstal kelas terkait.
Untuk informasi selengkapnya tentang karakteristik perangkat, lihat Menentukan Karakteristik Perangkat.
DeviceType
Entri AddRegHKR DeviceType menentukan jenis perangkat untuk perangkat. Jenis perangkat adalah nilai numerik dari konstanta FILE_DEVICE_XXX yang ditentukan dalam Wdm.h atau Ntddk.h. Nilai bendera 0x10001 menentukan bahwa nilai jenis perangkat adalah REG_DWORD. Untuk informasi selengkapnya, lihat Menentukan Jenis Perangkat.
INF penginstal kelas harus menentukan jenis perangkat yang berlaku untuk semua, atau hampir semua, perangkat di kelas . Misalnya, jika perangkat di kelas berjenis FILE_DEVICE_CD_ROM, tentukan jenis perangkat 0x02. Jika INF perangkat menentukan nilai untuk DeviceType, INF akan menggantikan nilai yang ditetapkan oleh penginstal kelas, jika ada. Jika INF kelas atau perangkat menentukan nilai DeviceType , manajer PnP menerapkan jenis tersebut ke objek perangkat fisik (PDO) yang dibuat oleh driver bus perangkat.
Keamanan
Entri AddReg HKR Keamanan menentukan pendeskripsi keamanan untuk perangkat. String deskriptor keamanan adalah string dengan token untuk menunjukkan komponen keamanan DACL (D:).
INF penginstal kelas dapat menentukan deskriptor keamanan untuk kelas perangkat. INF perangkat dapat menentukan pendeskripsi keamanan untuk perangkat individual, menggantikan keamanan untuk kelas . Jika INF kelas dan/atau perangkat menentukan string deskriptor keamanan, manajer PnP menyebarluaskan deskriptor ke semua objek perangkat ( DO) untuk perangkat. Ini termasuk objek perangkat fungsi (FDO), DO filter opsional, dan PDO.
Untuk informasi tentang format string pendeskripsi keamanan, lihat dokumentasi Microsoft Windows SDK.
Untuk informasi selengkapnya tentang cara menentukan deskriptor keamanan, lihat Membuat Penginstalan Perangkat Aman.
UpperFilters
Entri AddReg HKR UpperFilters menentukan driver filter atas PnP. Entri ini dalam DDInstall. Bagian HW mendefinisikan satu atau beberapa driver filter atas khusus perangkat. Di bagian ClassInstall32 , entri ini mendefinisikan satu atau beberapa driver filter atas di seluruh kelas.
Filter Bawah
Entri AddRegHKR LowerFilters menentukan driver filter bawah PnP. Entri ini dalam DDInstall. Bagian HW mendefinisikan satu atau beberapa driver filter bawah khusus perangkat. Di bagian ClassInstall32 , entri ini mendefinisikan satu atau beberapa driver filter bawah di seluruh kelas.
Eksklusif
Entri AddReg HKR Eksklusif, jika ada dan diatur ke "1", menentukan bahwa perangkat adalah perangkat eksklusif. Jika tidak, perangkat tidak diperlakukan sebagai eksklusif. Untuk informasi selengkapnya, lihat Menentukan Akses Eksklusif ke Objek Perangkat.
EnumPropPages32
Entri AddRegEnumPropPages32 HKR menentukan nama file pustaka tautan dinamis (DLL) yang merupakan penyedia halaman properti khusus perangkat. Ini juga menentukan nama fungsi panggilan balik ExtensionPropSheetPageProc seperti yang diimplementasikan oleh DLL. Untuk informasi selengkapnya tentang halaman dan fungsi properti, lihat Kit Pengembangan Perangkat Lunak (SDK) Microsoft Windows untuk Windows 7 dan .NET Framework 4.0.
Penting
Nama fungsi panggilan balik DLL dan ExtensionPropSheetPageProc harus diapit bersama-sama dalam tanda kutip (" ").
LocationInformationOverride
(Windows XP dan versi Windows yang lebih baru) Entri LocationInformationOverride HKR AddReg dapat digunakan untuk menentukan string teks yang menjelaskan lokasi fisik perangkat. Ini mengambil alih string LocationInformation yang disediakan driver bus perangkat sebagai respons terhadap permintaan IRP_MN_QUERY_DEVICE_TEXT .
ResourcePickerTags
Entri AddRegHKR ResourcePickerTags menentukan tag pemilih sumber daya untuk perangkat.
ResourcePickerExceptions
Entri AddRegHKR ResourcePickerExceptions menentukan konflik sumber daya yang diizinkan untuk perangkat.
Contoh
Direktif AddReg mereferensikan bagian Miniport_EventLog_AddReg (SCSI) dalam contoh ini, di bawah bagian yang ditentukan penulis INF yang direferensikan oleh direktif AddService dalam DDInstall. Bagian layanan dari INF ini.
[Miniport_EventLog_AddReg]
HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll"
; double quotation marks delimiters in preceding entry prevent truncation
; if line wraps
HKR,,TypesSupported,0x00010001,7
Perhatikan bahwa Anda dapat menentukan nilai bendera dalam format heksadesimal, seperti yang ditunjukkan dalam contoh, atau Anda dapat menentukan tempat penampung string seperti %FLG_ADDREG_TYPE_DWORD%
di bagian [String] dari setiap file INF.