2010-08-19 110 views
4

我有一個VB腳本,它將程序快捷方式添加到Windows啓動文件夾。在我的劇本,我能夠用這個檢索32位Windows的啓動文件夾的位置:如何檢索64位Windows中的啓動文件夾位置

Set objShell = CreateObject("WScript.Shell") 
    startupFolder = objShell.SpecialFolders("Startup") 

但是當我嘗試這在64位的Windows將沒有返回值。具體來說,我正在測試64位Vista。我似乎無法找到適當的環境變量或語法。謝謝。

+0

適用於64位Windows Vista Enterprise,並返回'C:\ Users \ \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup'。在32位和64位腳本主機下運行該腳本。 – Helen 2010-08-20 14:51:38

+0

奇怪。我不確定爲什麼我的代碼不起作用。哦,下面的答案適用。 – Banjer 2010-08-20 15:25:46

回答

5

使用Shell.Application對象嘗試另一種變型?

+0

是啊!適用於32位和64位。謝謝海倫。 – Banjer 2010-08-20 15:23:50

1

看看是否有效。這實際上讀取存儲文件夾的註冊表值。我可以'想象爲什麼其他方法不能在64位工作。

Const ssfSTARTUP = &H7 

Set oShell = CreateObject("Shell.Application") 
Set startupFolder = oShell.NameSpace(ssfSTARTUP) 

If Not startupFolder Is Nothing Then 
    WScript.Echo startupFolder.Self.Path 
End If 

是否爲你工作:

 
Dim startupFolder As String 
startupFolder = My.Computer.Registry.GetValue _ 
("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders", "Startup", Nothing) 
+0

我剛剛意識到我有我的問題標記爲vb而不是vbscript。你的代碼在vbscript中不起作用...謝謝。現在,我只是將啓動位置(!!)硬編碼爲64位。 – Banjer 2010-08-20 14:17:42

相關問題