2010-08-19 13 views
4

J'ai un script VB qui ajoute un raccourci de programme dans le dossier de démarrage de Windows. Dans mon scénario, je suis en mesure de récupérer l'emplacement du dossier de démarrage dans Windows 32 bits avec ceci:Comment faire pour récupérer l'emplacement du dossier de démarrage dans Windows 64 bits

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

mais il ne renvoie rien lorsque je tente cela sur Windows 64 bits. Plus précisément, je suis en train de tester sur Vista 64 bits. Je n'arrive pas à trouver la variable d'environnement ou la syntaxe appropriée pour cela. Merci.

+0

Fonctionne correctement pour moi sur Windows Vista Enterprise 64 bits et renvoie 'C: \ Users \ \ AppData \ Roaming \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ Démarrage». Ran le script sous les hôtes de script 32 bits et 64 bits. – Helen

+0

Étrange. Je ne sais pas pourquoi mon code ne fonctionne pas. Eh bien, votre réponse ci-dessous fonctionne. – Banjer

Répondre

5

Essayez une autre variante en utilisant l'objet 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 

-t-il pour vous?

+0

Ouais! Fonctionne sur 32 et 64 bits. Merci Helen. – Banjer

1

Voir si cela fonctionne. Cela lit en fait la valeur de registre où le dossier est stocké. Je peux imaginer pourquoi l'autre méthode ne fonctionne pas en 64 bits.

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

Je viens de réaliser que ma question était étiquetée vb et non vbscript. Votre code ne fonctionne pas dans vbscript ... merci bien. Pour l'instant, je vais juste coder en dur l'emplacement de démarrage (!!) pour 64 bits. – Banjer