2010-03-26 87 views
0

腳本,註冊表,屏幕保護程序,哦,我的!無法使用vbscript爲屏幕保護程序將SysWow64值寫入註冊表

我想在Windows XP 64位機器上使用屏幕保護程序,該機器使用.NET應用程序,它使依賴於某些x86 Shockwave Dll(某些Shockwave動畫)的互操作調用。一切應該在%systemroot%\ WINNT \ SysWOW64目錄中。當屏幕保護程序發生超時時,過程應如下所示:

Screensaver.scr - > .NET應用程序 - > shockwave動畫。

在安裝期間,我想要一個用於屏幕保護程序文件的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位註冊表編輯器我看到HKCU \ ControlPanel控制面板\桌面\ SCRNSAVE.EX設置爲:

C:\WINNT\system32\Screensaver.scr 

這是不對的。屏幕保護程序不會從該目錄運行。它只能從SysWOW64運行。如果我手動編輯註冊表與註冊表到正確的SysWOW64路徑一切工作正常。

這是使用腳本的問題還是這是Windows註冊表重定向或文件系統重定向問題?你會認爲這很簡單...

回答

0

經過更多的測試,我們發現其他腳本覆蓋了我們試圖改變的註冊表值。兩個(!)腳本正在做同樣的事情,並駐留在完全不同的位置。

我們不愛傳統軟件!