Пара программ в помощь Regedit
Sep 27, 2006 · CommentsИнструменты
Последние несколько дней я занималься масштабным перекраиванием реестра на одной их подопытных машин. Копировал, переименовывал и перемещал здоровые куски. В процессе выяснилось, regedit не очень-то подходит для подобных манипуляций. По началу я пытался обходиться правкой экспортированных .reg файлов, но потом понял, что нужно искать более удобный способ. Оказалось что способы есть, хотя их и не так много.
Во-первых начиная с Windows XP с системой поставляется утилита reg.exe. Эта утилита может читать, писать, удалять, копировать, экпортировать, импортировать и сравнивать как отдельные значения, так и целые деревья ключей. С её помощью можно писать довольно нетривиальные командные скрипты.
C:\>reg /?
REG Operation [Parameter List]
Operation [ QUERY | ADD | DELETE | COPY |
SAVE | LOAD | UNLOAD | RESTORE |
COMPARE | EXPORT | IMPORT ]
Return Code: (Except of REG COMPARE)
0 - Succussful
1 - Failed
For help on a specific operation type:
REG Operation /?
Examples:
REG QUERY /?
REG ADD /?
REG DELETE /?
REG COPY /?
REG SAVE /?
REG RESTORE /?
REG LOAD /?
REG UNLOAD /?
REG COMPARE /?
REG EXPORT /?
REG IMPORT /?
Вторая утилита, которая, впрочем, годиться не только для работы с реестром - это SubInACL. SubInACL позволяет редактировать права доступа (permissions) как никто другой.
C:\>subinacl /?
SubInAcl version 5.2.3790.1180
USAGE
-----
Usage :
SubInAcl [/option...] /object_type object_name [[/action[=parameter]...]
/options :
/outputlog=FileName /errorlog=FileName
/noverbose /verbose (default)
/notestmode (default) /testmode
/alternatesamserver=SamServer /offlinesam=FileName
/stringreplaceonoutput=string1=string2
/expandenvironmentsymbols (default) /noexpandenvironmentsymbols
/statistic (default) /nostatistic
/dumpcachedsids=FileName /separator=character
/applyonly=[dacl,sacl,owner,group]
/nocrossreparsepoint (default) /crossreparsepoint
/object_type :
/service /keyreg /subkeyreg
/file /subdirectories[=directoriesonly|filesonly]
/clustershare /kernelobject /metabase
/printer /onlyfile /process
/share /samobject
/action :
/display[=dacl|sacl|owner|primarygroup|sdsize|sddl] (default)
/setowner=owner
/replace=[DomainName\]OldAccount=[DomainName\]New_Account
/accountmigration=[DomainName\]OldAccount=[DomainName\]New_Account
/changedomain=OldDomainName=NewDomainName[=MappingFile[=Both]]
/migratetodomain=SourceDomain=DestDomain=[MappingFile[=Both]]
/findsid=[DomainName\]Account[=stop|continue]
/suppresssid=[DomainName\]Account
/confirm
/ifchangecontinue
/cleandeletedsidsfrom=DomainName[=dacl|sacl|owner|primarygroup|all]
/testmode
/accesscheck=[DomainName\]Username
/setprimarygroup=[DomainName\]Group
/grant=[DomainName\]Username[=Access]
/deny=[DomainName\]Username[=Access]
/sgrant=[DomainName\]Username[=Access]
/sdeny=[DomainName\]Username[=Access]
/sallowdeny==[DomainName\]Username[=Access]
/revoke=[DomainName\]Username
/perm
/audit
/compactsecuritydescriptor
/pathexclude=pattern
/objectexclude=pattern
/sddl=sddl_string
/objectcopysecurity=object_path
/pathcopysecurity=path_container
Usage : SubInAcl [/option...] /playfile file_name
Usage : SubInAcl /help [keyword]
SubInAcl /help /full
keyword can be :
features usage syntax sids view_mode test_mode object_type
domain_migration server_migration substitution_features editing_features
- or -
any [/option] [/action] [/object_type]
Например, следующая команда даёт полный доступ пользователю rabbit ко всем дочерним ключам HKEY_LOCAL_MACHINE\Software\Microsoft:
subinacl /subkeyreg HKEY_LOCAL_MACHINE\Software\Microsoft /grant=rabbit=f
Кроме того, SubInACL ещё и работает быстрее, хотя, возможно, это и субъективное впечатление. Не обошлось и без ложки дегтя. Мне так и не удалось найти 64-х битную версию SubInACL в открытом доступе.