.\" Automatically generated by Podwrapper::Man 1.40.2 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "virt-win-reg 1" .TH virt-win-reg 1 "2019-02-07" "libguestfs-1.40.2" "Virtualization Support" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "НАЗВА" .IX Header "НАЗВА" virt-win-reg — програма для експортування та дописування записів реєстру Windows з гостьової системи Windows .SH "КОРОТКИЙ ОПИС" .IX Header "КОРОТКИЙ ОПИС" .Vb 1 \& virt\-win\-reg назва_домену \*(AqHKLM\eШлях\eдо\eпідключа\*(Aq \& \& virt\-win\-reg назва_домену \*(AqHKLM\eШлях\eдо\eпідключа\*(Aq назва \& \& virt\-win\-reg назва_домену \*(AqHKLM\eШлях\eдо\eпідключа\*(Aq @ \& \& virt\-win\-reg \-\-merge назва_домену [вхідний.reg ...] \& \& virt\-win\-reg [\-\-параметри] диск.img ... # замість назва_домену .Ve .SH "ПОПЕРЕДЖЕННЯ" .IX Header "ПОПЕРЕДЖЕННЯ" \&\fIНе\fR використовуйте \f(CW\*(C`virt\-win\-reg\*(C'\fR з параметром \fI\-\-merge\fR для активних віртуальних машин. Якщо ви зробите це, ви \fIневиправно\fR ушкодите диск у віртуальній машині. \f(CW\*(C`virt\-win\-reg\*(C'\fR намагатиметься запобігти подібним діям, але програма не завжди може визначити усі можливі випадки. .PP Внесення змін до реєстру Windows є ризикованою дією. Формат реєстру доволі неясний і недокументований, а зміни у реєстрі можуть призвести до неможливості завантажити систему. Тому, якщо ви користуєтеся параметром \&\fI\-\-merge\fR, не забувайте спочатку створити надійну резервну копію. .SH "ОПИС" .IX Header "ОПИС" Ця програма може експортувати і дописувати записи реєстру Windows з гостьової системи Windows. .PP Першим параметром є назва гостьової системи libvirt або простого (raw) образу гостьової системи Windows. .PP Якщо \fIне\fR вказано параметр \fI\-\-merge\fR, вибраний ключ реєстру буде показано або експортовано (рекурсивно). Приклад: .PP .Vb 1 \& $ virt\-win\-reg Windows7 \*(AqHKEY_LOCAL_MACHINE\eSOFTWARE\eMicrosoft\*(Aq .Ve .PP Крім того, ви можете переглядати окремі значення у ключах реєстру. Приклад: .PP .Vb 3 \& $ cvkey=\*(AqHKLM\eSOFTWARE\eMicrosoft\eWindows NT\eCurrentVersion\*(Aq \& $ virt\-win\-reg Windows7 $cvkey ProductName \& Windows 7 Enterprise .Ve .PP За допомогою \fI\-\-merge\fR ви можете дописати текстовий файл regedit до реєстру Windows: .PP .Vb 1 \& $ virt\-win\-reg \-\-merge Windows7 changes.reg .Ve .SS "ПРИМІТКА" .IX Subsection "ПРИМІТКА" Цю програму призначено лише для спрощення доступу до реєстру. Якщо вам потрібні якісь складні дії з реєстром, рекомендуємо вам отримати файли роїв реєстру з гостьової системи за допомогою \fBlibguestfs\fR\|(3) або \&\fBguestfish\fR\|(1) і обробити їх локально, наприклад за допомогою \fBhivex\fR\|(3), \&\fBhivexsh\fR\|(1) або \fBhivexregedit\fR\|(1). .SH "ПАРАМЕТРИ" .IX Header "ПАРАМЕТРИ" .IP "\fB\-\-help\fR" 4 .IX Item "--help" Показати коротку довідку. .IP "\fB\-\-version\fR" 4 .IX Item "--version" Показати дані щодо версії і завершити роботу. .IP "\fB\-\-debug\fR" 4 .IX Item "--debug" Увімкнути показ діагностичних повідомлень. .IP "\fB\-c адреса\fR" 4 .IX Item "-c адреса" .PD 0 .IP "\fB\-\-connect адреса\fR" 4 .IX Item "--connect адреса" .PD Якщо використовується libvirt, встановити з’єднання з вказаним \fI\s-1URI\s0\fR. Якщо пропущено, з’єднання буде встановлено з типовим гіпервізором libvirt. .Sp Якщо вказати блокові пристрої гостьових систем безпосередньо, libvirt не буде використовуватися взагалі. .IP "\fB\-\-format\fR raw" 4 .IX Item "--format raw" Визначає формат образу диска, назву якого вказано у рядку команди. Якщо формат не вказано, його буде визначено автоматично на основі вмісту образу диска. .Sp Якщо вказаний диск походить з libvirt, ця програма надішле запит щодо даних до libvirt. У цьому випадку вказане значення параметра формату буде проігноровано. .Sp Якщо ви працюєте із образами дисків гостьових систем у форматі raw із ненадійних джерел, вам слід завжди вказувати назву формату. .IP "\fB\-\-merge\fR" 4 .IX Item "--merge" У режимі об'єднання програма дописує текстовий файл regedit до реєстру Windows віртуальної машини. Якщо цей параметр \fIне\fR вказано, virt-win-reg показує або експортує записи реєстру. .Sp Зауважте, що \fI\-\-merge\fR \fIне безпечно\fR використовувати для активних віртуальних машин. Використання цього параметра команди для активних віртуальних машин призводить до пошкодження вмісту диска. Втім, експортування (виконання команди без цього параметра) є завжди безпечним. .IP "\fB\-\-encoding\fR UTF\-16LE|ASCII" 4 .IX Item "--encoding UTF-16LE|ASCII" При об'єднанні (і лише при ньому) у вас може виникнути потреба у визначення кодування рядків, які використовуються у файлі рою. Докладніший опис можна знайти у розділі \*(L"\s-1ENCODING STRINGS\*(R"\s0 in \fBWin::Hivex::Regedit\fR\|(3). .Sp Типово буде використано кодування \s-1UTF\-16LE,\s0 яке має працювати у свіжих версіях Windows. .IP "\fB\-\-unsafe\-printable\-strings\fR" 4 .IX Item "--unsafe-printable-strings" Під час експортування (і лише під час нього) припускати, що рядки записано у кодуванні \s-1UTF\-16LE\s0 і виводити їх у форматі текстових рядків, а не послідовностей шістнадцяткових чисел. Вилучити завершальний нуль\-символ з рядків, якщо такий буде виявлено. .Sp Така дія не є безпечною і не надає можливості зберегти точність запису початкових рядків реєстру з різних причин: .RS 4 .IP "\(bu" 4 Припускається, що початковим кодуванням є \s-1UTF\-16LE.\s0 Рядки \s-1ASCII\s0 і рядки у інших кодуваннях буде пошкоджено під час цього перетворення. .IP "\(bu" 4 Припускається, що усі дані, які належать до типу 1 чи типу 2, є насправді рядками і що усі інші дані не є рядками, але визначений тип поля у реєстрах, зазвичай, не є надійним джерелом даних. .IP "\(bu" 4 Втрачаються дані щодо того, чи завершувався рядок у реєстрі нуль\-символом. .RE .RS 4 .Sp Усе це є наслідком того, що сам реєстр не містить даних щодо кодування рядків у ньому (див. \*(L"\s-1ENCODING STRINGS\*(R"\s0 in \fBWin::Hivex::Regedit\fR\|(3)). .Sp Цим параметром слід користуватися лише для найпростіших рішень та діагностування вмісту реєстру. \fIНіколи\fR не користуйтеся ним, якщо виведені дані має бути передано іншій програмі або збережено у іншому реєстрі. .RE .SH "ПІДТРИМУВАНІ СИСТЕМИ" .IX Header "ПІДТРИМУВАНІ СИСТЕМИ" У поточній версії цієї програми передбачено підтримку гостьових систем, які походять від Windows \s-1NT,\s0 починаючи з Windows \s-1XP\s0 і до, принаймні, Windows 8. .PP Передбачено підтримку таких ключів реєстру: .ie n .IP """HKEY_LOCAL_MACHINE\eSAM""" 4 .el .IP "\f(CWHKEY_LOCAL_MACHINE\eSAM\fR" 4 .IX Item "HKEY_LOCAL_MACHINESAM" .PD 0 .ie n .IP """HKEY_LOCAL_MACHINE\eSECURITY""" 4 .el .IP "\f(CWHKEY_LOCAL_MACHINE\eSECURITY\fR" 4 .IX Item "HKEY_LOCAL_MACHINESECURITY" .ie n .IP """HKEY_LOCAL_MACHINE\eSOFTWARE""" 4 .el .IP "\f(CWHKEY_LOCAL_MACHINE\eSOFTWARE\fR" 4 .IX Item "HKEY_LOCAL_MACHINESOFTWARE" .ie n .IP """HKEY_LOCAL_MACHINE\eSYSTEM""" 4 .el .IP "\f(CWHKEY_LOCAL_MACHINE\eSYSTEM\fR" 4 .IX Item "HKEY_LOCAL_MACHINESYSTEM" .ie n .IP """HKEY_USERS\e.DEFAULT""" 4 .el .IP "\f(CWHKEY_USERS\e.DEFAULT\fR" 4 .IX Item "HKEY_USERS.DEFAULT" .ie n .IP """HKEY_USERS\e\fISID\fP""" 4 .el .IP "\f(CWHKEY_USERS\e\f(CISID\f(CW\fR" 4 .IX Item "HKEY_USERSSID" .PD де \fI\s-1SID\s0\fR — \s-1SID\s0 користувача Windows (наприклад \f(CW\*(C`S\-1\-5\-18\*(C'\fR). .ie n .IP """HKEY_USERS\e\fIкористувач\fP""" 4 .el .IP "\f(CWHKEY_USERS\e\f(CIкористувач\f(CW\fR" 4 .IX Item "HKEY_USERSкористувач" де \fIкористувач\fR — назва облікового запису локального користувача (це розширення libguestfs). .PP Ви можете використовувати \f(CW\*(C`HKLM\*(C'\fR як скорочення від \f(CW\*(C`HKEY_LOCAL_MACHINE\*(C'\fR, та \f(CW\*(C`HKU\*(C'\fR як скорочення від \f(CW\*(C`HKEY_USERS\*(C'\fR. .PP Підтримки буквальних ключів \f(CW\*(C`HKEY_USERS\e$SID\*(C'\fR і \f(CW\*(C`HKEY_CURRENT_USER\*(C'\fR не передбачено (немає «поточного користувача»). .SS "\s-1WINDOWS 8\s0" .IX Subsection "WINDOWS 8" «Швидкий запуск» Windows 8 може заважати virt-win-reg редагувати реєстр. Див. \*(L"ПРИСИПЛЯННЯ \s-1WINDOWS\s0 ТА ШВИДКИЙ ЗАПУСК \s-1WINDOWS 8\*(R"\s0 in \fBguestfs\fR\|(3). .SH "КОДУВАННЯ" .IX Header "КОДУВАННЯ" \&\f(CW\*(C`virt\-win\-reg\*(C'\fR вважає, що вміст файлів regedit вже перекодовано до локального кодування. Зазвичай, у основних системах Linux це означає, що використано \s-1UTF\-8\s0 із символами завершення рядків у стилі Unix. Оскільки файли regedit Windows часто записуються у кодуванні \s-1UTF\-16LE\s0 із символами завершення рядків у стилі Windows, ймовірно, вам доведеться виконати перекодування усього файла до або після обробки. .PP Для перекодування файла з формату Windows до формату Linux (до обробки його за допомогою команди з параметром \fI\-\-merge\fR) вам слід зробити щось таке: .PP .Vb 1 \& iconv \-f utf\-16le \-t utf\-8 < win.reg | dos2unix > linux.reg .Ve .PP Щоб виконати зворотне перетворення після експортування і перед надсиланням файла користувачеві Windows, слід зробити щось таке: .PP .Vb 1 \& unix2dos linux.reg | iconv \-f utf\-8 \-t utf\-16le > win.reg .Ve .PP Щоб дізнатися більше про кодування, ознайомтеся зі сторінкою підручника щодо \&\fBWin::Hivex::Regedit\fR\|(3). .PP Якщо ви не певні щодо поточного кодування, скористайтеся командою \&\fBfile\fR\|(1). У свіжих версіях Windows regedit.exe створює файли кодування \&\s-1UTF\-16LE\s0 із символами завершення рядків у стилі Windows (\s-1CRLF\s0), ось такі: .PP .Vb 3 \& $ file software.reg \& software.reg: Little\-endian UTF\-16 Unicode text, with very long lines, \& with CRLF line terminators .Ve .PP Цей файл потребуватиме перетворення, перш ніж ви зможете скористатися для нього параметром \fI\-\-merge\fR. .SH "CurrentControlSet тощо." .IX Header "CurrentControlSet тощо." Ключі реєстру, подібні до \f(CW\*(C`CurrentControlSet\*(C'\fR, насправді не існують у реєстрі Windows на рівні файла рою, і тому ви не зможете вносити до них зміни. .PP Насправді, \f(CW\*(C`CurrentControlSet\*(C'\fR є альтернативною назвою \f(CW\*(C`ControlSet001\*(C'\fR. За певних обставин це може бути посиланням на інший керівний набір. Визначити набір можна за допомогою ключа \f(CW\*(C`HKLM\eSYSTEM\eSelect\*(C'\fR: .PP .Vb 6 \& # virt\-win\-reg WindowsGuest \*(AqHKLM\eSYSTEM\eSelect\*(Aq \& [HKEY_LOCAL_MACHINE\eSYSTEM\eSelect] \& "Current"=dword:00000001 \& "Default"=dword:00000001 \& "Failed"=dword:00000000 \& "LastKnownGood"=dword:00000002 .Ve .PP «Поточним» є той набір, який Windows вибере під час завантаження. .PP Аналогічно, інші ключі \f(CW\*(C`Current...\*(C'\fR у шляху можуть потребувати заміни. .SH "ВИЛУЧЕННЯ КЛЮЧІВ ТА ЗНАЧЕНЬ РЕЄСТРУ" .IX Header "ВИЛУЧЕННЯ КЛЮЧІВ ТА ЗНАЧЕНЬ РЕЄСТРУ" Для вилучення усього ключа реєстру скористайтеся такою синтаксичною конструкцією: .PP .Vb 1 \& [\-HKEY_LOCAL_MACHINE\eFoo] .Ve .PP Для вилучення окремого значення у ключі скористайтеся такою синтаксичною конструкцією: .PP .Vb 2 \& [HKEY_LOCAL_MACHINE\eFoo] \& "Value"=\- .Ve .SH "ПІДКАЗКИ ЩОДО WINDOWS" .IX Header "ПІДКАЗКИ ЩОДО WINDOWS" Зауважте, що у результаті деяких із команд у підказках буде змінено образ диска гостьової системи. Гостьову систему \fIмає\fR бути вимкнено, щоб запобігти пошкодженню даних на диску. .SS "ЗАПУСК ПАКЕТНОГО СКРИПТУ ПІД ЧАС ВХОДУ КОРИСТУВАЧА ДО СИСТЕМИ" .IX Subsection "ЗАПУСК ПАКЕТНОГО СКРИПТУ ПІД ЧАС ВХОДУ КОРИСТУВАЧА ДО СИСТЕМИ" Приготуйте пакетний скрипт \s-1DOS\s0 (.bat), скрипт VBScript або виконуваний файл. Вивантажте його до гостьової системи за допомогою \fBguestfish\fR\|(1). У цьому прикладі скрипт називається \f(CW\*(C`test.bat\*(C'\fR і його вивантажено до \f(CW\*(C`C:\e\*(C'\fR: .PP .Vb 1 \& guestfish \-i \-d WindowsGuest upload test.bat /test.bat .Ve .PP Приготуйте файл regedit, який міститиме зміни до реєстру: .PP .Vb 4 \& cat > test.reg <<\*(AqEOF\*(Aq \& [HKLM\eSoftware\eMicrosoft\eWindows\eCurrentVersion\eRunOnce] \& "Test"="c:\e\etest.bat" \& EOF .Ve .PP У цьому прикладі ми використовуємо ключ \f(CW\*(C`RunOnce\*(C'\fR, який означає, що скрипт буде запущено лише один раз під час першого входу користувача до системи. Якщо вам потрібно, щоб скрипт запускався кожного разу, коли користувач входить до системи, замініть \f(CW\*(C`RunOnce\*(C'\fR на \f(CW\*(C`Run\*(C'\fR. .PP Оновіть регістр: .PP .Vb 1 \& virt\-win\-reg \-\-merge WindowsGuest test.reg .Ve .SS "ВСТАНОВЛЕННЯ СЛУЖБИ" .IX Subsection "ВСТАНОВЛЕННЯ СЛУЖБИ" У цьому розділі ми припускаємо, що ви обізнані із роботою служб Windows і маєте програму, яка обробляє протокол керування службами Windows безпосередньо або хочете запустити будь\-яку програму за допомогою обгортки служби, наприклад SrvAny або безкоштовної RHSrvAny. .PP Спочатку вивантажте програму і, якщо потрібно, обгортку служби. У нашому прикладі тестова програма має назву \f(CW\*(C`test.exe\*(C'\fR і використано обгортку RHSrvAny: .PP .Vb 4 \& guestfish \-i \-d WindowsGuest < service.reg <<\*(AqEOF\*(Aq \& [HKLM\eSYSTEM\eControlSet001\eservices\eRHSrvAny] \& "Type"=dword:00000010 \& "Start"=dword:00000002 \& "ErrorControl"=dword:00000001 \& "ImagePath"="c:\e\erhsrvany.exe" \& "DisplayName"="RHSrvAny" \& "ObjectName"="NetworkService" \& \& [HKLM\eSYSTEM\eControlSet001\eservices\eRHSrvAny\eParameters] \& "CommandLine"="c:\e\etest.exe" \& "PWD"="c:\e\eTemp" \& EOF .Ve .PP Нотатки: .IP "\(bu" 4 Щодо використання \f(CW\*(C`ControlSet001\*(C'\fR див. розділ вище на цій сторінці підручника. Ймовірно, вам слід скоригувати цей запис відповідно до керівного набору, який використовується вашою гостьовою системою. .IP "\(bu" 4 \&\f(CW"ObjectName"\fR керує правами доступу, які матиме служба. Альтернативою є \&\f(CW"ObjectName"="LocalSystem"\fR, яка надає права доступу найпривілейованішого облікового запису. .IP "\(bu" 4 Щодо значення «магічних чисел» ознайомтеся із цією статтею бази даних знань Microsoft: http://support.microsoft.com/kb/103000. .PP Оновіть регістр: .PP .Vb 1 \& virt\-win\-reg \-\-merge WindowsGuest service.reg .Ve .SH "ЕКРАНУВАННЯ СИМВОЛІВ У ОБОЛОНЦІ" .IX Header "ЕКРАНУВАННЯ СИМВОЛІВ У ОБОЛОНЦІ" Будьте обережні із передаванням параметрів, які містять символ \f(CW\*(C`\e\*(C'\fR (зворотну похилу риску), до командної оболонки. Зазвичай, вам слід використати одинарні лапки або подвійні зворотні похилі риски (але не те і інше одразу) для захисту від обробки інтерпретатором командної оболонки. .PP Регістр символів шляхів і назв значень береться до уваги під час обробки. .SH "ТАКОЖ ПЕРЕГЛЯНЬТЕ" .IX Header "ТАКОЖ ПЕРЕГЛЯНЬТЕ" \&\fBhivex\fR\|(3), \fBhivexsh\fR\|(1), \fBhivexregedit\fR\|(1), \fBguestfs\fR\|(3), \&\fBguestfish\fR\|(1), \fBvirt\-cat\fR\|(1), \fBvirt\-tail\fR\|(1), \fBSys::Guestfs\fR\|(3), \&\fBWin::Hivex\fR\|(3), \fBWin::Hivex::Regedit\fR\|(3), \fBSys::Virt\fR\|(3), http://libguestfs.org/. .SH "АВТОР" .IX Header "АВТОР" Richard W.M. Jones http://people.redhat.com/~rjones/ .SH "АВТОРСЬКІ ПРАВА" .IX Header "АВТОРСЬКІ ПРАВА" ©Red Hat Inc., 2010 .SH "LICENSE" .IX Header "LICENSE" .SH "BUGS" .IX Header "BUGS" To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools .PP To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools .PP When reporting a bug, please supply: .IP "\(bu" 4 The version of libguestfs. .IP "\(bu" 4 Where you got libguestfs (eg. which Linux distro, compiled from source, etc) .IP "\(bu" 4 Describe the bug accurately and give a way to reproduce it. .IP "\(bu" 4 Run \fBlibguestfs\-test\-tool\fR\|(1) and paste the \fBcomplete, unedited\fR output into the bug report.