![]() |
перенос личных сертификатов КриптоПро
Здравствуйте уважаемые специалисты.
задумался над автоматизацией переноса личных сертификатов КриптоПро, либо на другой комп, либо на новую windows. Сейчас это приходится делать ручками так: Выгружаем куст реестра на старой машине HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings (для x86) | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings (для X64), затем на новой машине смотрим SID и через notepad++ производим поиск и замену старого SID на новый SID в этих файлах, после чего импортируем измененные файлы в реестр, все - сертификаты перенесены )) Можно ли как-то автоматизировать поиск и замену SID в выгруженных файлах??? |
meir, Вы полагаете, у всех и каждого установлен Crypto Pro? И причём тут «куст реестра»?
Покажите образец содержимого HKLM\SOFTWARE\Crypto Pro\Settings, укажите про какой именно SID идёт речь, где именно смотрите SID на новой машине. |
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings] "Version"="4.0.9708" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\KeyDevices] "LicErrorLevel"=dword:00000006 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Keys] @="" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users] @="" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\S-1-5-21-1365644562-2568224515-950490703-1000] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\S-1-5-21-1365644562-2568224515-950490703-1000\KeyDevices] На старом компе я вижу установленные Контур, Сбис и другие установленные программы использующие шифрование КриптоПро, экспортирую ключ реестра (выше приведено начало ключа sid в данном случае S-1-5-21-1365644562-2568224515-950490703-1000) На новом компе первым делом я устанавливаю криптоПро, затем получаю SID напирмер он S-1-5-21-1365644562-2568224515-950490703-2222 и через notepad ++ заменяю sid, затем импортирую получившийся файл. Загвоздка тока в замене sid, пытался сделать так: получаем sid в текстовый файл командой wmic useraccount where name='%username%' get sid > C:\sid\oldPK.txt , так же на новом wmic useraccount where name='%username%' get sid > C:\sid\newPK.txt , получается значение из двух строчек SID S-1-5-21-1365644562-2568224515-950490703-1000 искать значение 2й строки из oldPK.txt в файле key.reg и заменить его значением из 2й строки файла newPK.txt Не хватает головы на скрипт (( |
И тот, и другой SID представляют собой SID текущего пользователя, так?
|
Да, текущего пользователя
|
Тогда попробуйте так:
Скрытый текст
Код:
Option Explicit Для экспорта запускаете скрипт с параметром «/export», для импорта — «/import». При экспорте производится экспорт раздела «HKLM\SOFTWARE\Crypto Pro» утилитой reg.exe в определённое в скрипте имя файла реестра — «Exported Crypto Pro.reg», затем в полученном файле реестра SID текущего пользователя заменяется на определённое в скрипте заданное значение — «@@@CurrentUserSID@@@». При импорте сначала производится замена в файле реестра строки с заданным в скрипте значением на SID текущего пользователя, затем производится импорт данного файла реестра той же утилитой reg.exe. Для версий ОС от Windows XP/Windows Server 2003 и до Vista/Windows Server 2008 могут потребоваться хотфиксы: You cannot use the Reg.exe utility to access 64-bit registry keys on a 64-bit computer from a computer that is running a 32-bit version of Windows Server 2003, Windows XP, Windows Server 2008, or Windows Vista. Начиная с Windows 7/Windows Server 2008 R2 хотфиксы не нужны. |
Вложений: 1
Фантастика!! крутой код! подскажите когда запускаю с ключом /export выскакивает ошибка (прикладываю скрин)
|
Это строка:
Код:
If objSWbemObjectEx.GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Crypto Pro\Settings", "Version", strValue) = 0 Then |
Невероятно!!!!! завтра проверю на рабочих, но на моем сработало!!!! Спасибо огромное, даже не верится)))
|
Так, тут попутно выяснил вроде бы как можно ограниченно реализовать IsWow64Process на WSH :), оставлю для себя для памяти на будущее:
Скрытый текст
Код:
Option Explicit Понятно, что это ни разу не натуральная IsWow64Process и близко. Просто тупо смотрим — есть ли у заданного процесса библиотека %SystemRoot%\System32\wow64.dll. Если есть — с некоторой долей вероятности это x86 процесс под x64 ОС. Разумеется, подобный упрощённый подход чреват ошибками, скажем, дочерний procexp64.exe (являющийся вполне себе x64) будет некорректно определён как x86. |
:( Попробовал мой экспортированный файл закинуть скриптом на рабочий компьютер, он просто создал рядом ветку с моим SID, не понимаю смотрю код, круто реализованно - он рабочий, но почему-то не подменяет :not-me:
|
meir, покажите, как должно было быть, и как на самом деле получилось.
|
Цитата:
Код:
Set objWShell = CreateObject("WScript.Shell") |
Время: 21:53. |
Время: 21:53.
© OSzone.net 2001-