olmak
24-10-2012, 09:56
Причина создания - не работает импорт reg-файлов(regedit /s) вызванная из коммандной строки 32-разрядного приложения в среде windows x64 (известная проблема)
Средство решения - програмка на autoit
Текст программы :
If $CMDLINE[0] <> 1 Then
MsgBox(4096, "Внимание", "Неправильная коммандная строка . Надо reg_imp.exe file.reg", 5)
; Exit if parameter were not used Exit
EndIf
$RegFile = $CMDLINE[1]
If Not FileExists($RegFile) Then
MsgBox(4096, "Внимание", "Файл" & $RegFile & "не найден - выход без импорта reg", 5)
Exit
EndIf
$tValue = DllStructCreate('dword')
If @OSArch = 'X64' Then DllCall('kernel32.dll', 'int', 'Wow64DisableWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
$CommandLine="REGEDIT /S " & $RegFile
RunWait($CommandLine, "", @SW_HIDE)
If @OSArch = 'X64' Then DllCall('kernel32.dll', 'int', 'Wow64RevertWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
За корявость кода прошу не пинать , нет навыков постоянного программирования на autoit
Пример запуска: reg_imp.exe file.reg(Полное имя с путями)
Принцип работы :
1. На 64-разрядной системе отключаем перенаправление системных папок
2. Импортирует преданный через параметр коммандной строки рег-файл
3 На 64-разрядной системе включаем перенаправление системных папок
P.S. Особенно полезно для создания аддонов и тихих инсталляций с импортом рег-файлов
Средство решения - програмка на autoit
Текст программы :
If $CMDLINE[0] <> 1 Then
MsgBox(4096, "Внимание", "Неправильная коммандная строка . Надо reg_imp.exe file.reg", 5)
; Exit if parameter were not used Exit
EndIf
$RegFile = $CMDLINE[1]
If Not FileExists($RegFile) Then
MsgBox(4096, "Внимание", "Файл" & $RegFile & "не найден - выход без импорта reg", 5)
Exit
EndIf
$tValue = DllStructCreate('dword')
If @OSArch = 'X64' Then DllCall('kernel32.dll', 'int', 'Wow64DisableWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
$CommandLine="REGEDIT /S " & $RegFile
RunWait($CommandLine, "", @SW_HIDE)
If @OSArch = 'X64' Then DllCall('kernel32.dll', 'int', 'Wow64RevertWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
За корявость кода прошу не пинать , нет навыков постоянного программирования на autoit
Пример запуска: reg_imp.exe file.reg(Полное имя с путями)
Принцип работы :
1. На 64-разрядной системе отключаем перенаправление системных папок
2. Импортирует преданный через параметр коммандной строки рег-файл
3 На 64-разрядной системе включаем перенаправление системных папок
P.S. Особенно полезно для создания аддонов и тихих инсталляций с импортом рег-файлов