Как получить местоположение папки автозагрузки в 64-битной Windows - PullRequest
4 голосов
/ 19 августа 2010

У меня есть скрипт VB, который добавляет ярлык программы в папку автозагрузки Windows.В моем сценарии я могу получить местоположение папки «Автозагрузка» в 32-разрядной Windows с помощью:

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

, но при попытке выполнить это в 64-разрядной Windows ничего не возвращаетсяВ частности, я тестирую на 64-битной Vista.Я не могу найти соответствующую переменную среды или синтаксис для этого.Спасибо.

Ответы [ 2 ]

5 голосов
/ 20 августа 2010

Попробуйте альтернативный вариант, используя объект Shell.Application:

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

У тебя это работает?

1 голос
/ 19 августа 2010

Посмотрите, работает ли это.Это фактически читает значение реестра, где хранится папка.Я могу себе представить, почему другой метод не работает в 64-битной версии.

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