2015-11-02 29 views
0

有沒有辦法在不編輯註冊表的情況下更改Windows計算機的桌面背景?因爲這個程序將在不同的計算機上運行,​​這可能會影響USB驅動器盤符有沒有一個VBS,它會檢查它是什麼驅動器號,並將複製照片(我需要驅動器號作爲文件原點複製它)到本地驅動器。有人知道怎麼做嗎? TIA更改不帶註冊表的桌面背景

+0

'Wscript.ScriptFullName'包含您的vbs文件的全名,所以只需從它獲取驅動器號。 – wOxxOm

+2

不,您不能在不修改註冊表的情況下更改牆紙,因爲它是存儲牆紙位置的地方。 –

回答

0

不,您需要編輯註冊表,這是根據圖像引用的定義。

正如上述評論者所說,有辦法解決這個問題。首先,你可以嘗試一個相對路徑而不是絕對路徑。在下面的代碼中,當然要刪除消息框。

Set WshShell = CreateObject("WScript.Shell") 
msgbox WshShell.CurrentDirectory 'This returns the path of your script 

要獲得完整的路徑到腳本,只需使用

msgbox WScript.ScriptFullName 

獎勵積分,我們可以使用

msgbox CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) 

這將否定有關驅動器號或其它地方的任何關注文件夾是。如果你願意,你可以使用下面的方式來取出盤符。

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objShell = CreateObject("Wscript.Shell") 

strPath = objShell.CurrentDirectory 
strDrive = objFSO.GetDriveName(strPath) 

msgbox strDrive 

一些會讓您的腳本複雜化的原因是,您希望確保桌面圖片在移除閃存驅動器後仍然可用。你有兩個選擇。一,您可以將您的照片複製到C:上的安全位置。或者,我要做的是在VBS中添加一個偵聽器,檢查X:驅動器是否仍然可讀。一旦閃存驅動器被拔出,vbs將繼續運行,因此它會注意到驅動器已經消失,然後將桌面映像恢復。

一些psudocode:

Read the reg desktop location 
Back it up 
write new location 
refresh desktop 
Call Secondary Script (OR LOOP NOW to watch the drive) 

根據你的腳本做什麼,有它調用另一個腳本,檢查閃存驅動器,或者僅僅是在主腳本的循環。我只是簡單地調用另一個腳本,以便您可以自由地執行其他任何腳本。如果您還有其他問題,請告訴我!