2015-11-02 67 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) 

根据你的脚本做什么,有它调用另一个脚本,检查闪存驱动器,或者仅仅是在主脚本的循环。我只是简单地调用另一个脚本,以便您可以自由地执行其他任何脚本。如果您还有其他问题,请告诉我!