Скрипты, реестры, заставки, о боже!
Я пытаюсь использовать экранную заставку на 64-битной машине с Windows XP, которая использует приложение .NET, которое выполняет вызов взаимодействия, который опирается на некоторые x86 Shockwave Dlls (некоторые Shockwave анимация). Все должно быть в каталоге% systemroot% \ WINNT \ SysWOW64. Когда происходит тайм-аут для заставки, процесс должен выглядеть следующим образом:
Screensaver.scr -> .NET app -> Shockwave animation.
Во время установки я хочу, чтобы vbscript к моему файлу заставки скопировал Screensaver.scr в каталог SysWow64, а затем установил соответствующий ключ реестра для этого файла, чтобы Windows запускала заставку.
Код выглядит примерно так:
Dim sScreenSaver, tScreenSaver
sScreenSaver = "C:\SourceFiles\bin\ScreenSaver.scr" 'screensaver
tScreenSaver = "C:\winnt\SysWOW64\"
Set WshShell = WScript.CreateObject("WScript.Shell") 'script shell to run objects
Set FSO = createobject("scripting.filesystemobject") 'file system object
'copy screensaver
FSO.CopyFile sScreenSaver, tScreenSaver, True
'set screen saver
Dim p1
p1 = "HKEY_CURRENT_USER\Control Panel\Desktop\"
WshShell.RegWrite p1 & "SCRNSAVE.EXE", (tScreenSaver & "ScreenSaver.scr")
После установки я могу убедиться, что Заставка существует в правильном каталоге. (Похоже, что он находится в каталогах system32 и sysWOW64 - будь то скрипт установки или что-то, что я делал после установки, я проверяю.)
Однако запись в реестре неверна. В 32-разрядном и 64-разрядном regedit я вижу, что HKCU \ ControlPanel \ Desktop \ SCRNSAVE.EX установлен в:
C:\WINNT\system32\Screensaver.scr
Это не правильно. Заставка не запускается из этого каталога. Он запускается только из SysWOW64. Если я вручную отредактирую реестр с помощью regedit по правильному пути SysWOW64, все будет отлично.
Это проблема с использованием скрипта или это перенаправление реестра Windows или проблема перенаправления файловой системы? Вы могли бы подумать, что это будет просто ...