2010-05-12 4 views
7

Je suis en train de lancer un programme que j'ai fait dans ce répertoire:Utilisez le registre pour démarrer un programme, et aussi changer le répertoire de travail actuel?

C:\example\example.exe -someargument 

lorsque l'ordinateur démarre. Je tente d'utiliser cette clé de Registre:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 

la clé étant:

Name: example 
Type: REG_SZ 
Data: "C:\example\example.exe -someargument" 

Mais mon programme a également besoin des fichiers à partir du répertoire C: \ exemple, mais ne peut pas les trouver, car le courant le répertoire de travail est différent. Est-il possible de faire quelque chose comme ça dans la valeur de la clé de registre

"cd C:\example\; example.exe -someargument" 

de sorte qu'il va changer le répertoire? Ou bien y a-t-il une meilleure solution?

Merci!

+0

Quand vous dites "j'ai fait", avez-vous écrit example.exe? Si oui, dans quelle langue? –

+0

Oui, c'était en C++ – Joel

Répondre

7

Vous pouvez enregistrer votre application sous la clé suivante de registre (comme celui-ci ne Reg2Run tool)

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\example.exe 

@="c:\example\example.exe" 
Path="c:\AnotherPath" 

Alors System.Diagnostics.Run("example.exe"); va lancer votre application avec le chemin de travail spécifié.

Ou d'une autre façon: écrire un lanceur en utilisant C#. Vous pouvez faire la même chose à l'aide d'une applet de commande PowerShell.

var info = new System.Diagnostics.ProcessStartInfo(@"c:\example\example.exe", "-someargument") 
{ 
    WorkingDirectory = @"c:\AnotherPath" 
}; 
System.Diagnostics.Process.Start(info); 
0

Si les fichiers sont toujours dans le même répertoire que votre application, utilisez le Application.ExecutablePath pour localiser le répertoire de travail pour les fichiers à partir de votre code, puis vous pouvez les référencer quoi qu'il arrive.

0

Si vous avez besoin des DLL de charge à partir du même répertoire que vous pouvez créer sous-clé example.exe sous

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 
clé de Registre

et définir PATHREG_SZ valeur example.exe

4

Au début de l'application, procédez suivant (ceci est C#, convertir en C++):

using System.IO; 
: 
: 
    Environment.CurrentDirectory = Path.GetDirectoryName(Application.ExecutablePath); 
+0

Ceci est juste un extrait de code donnant des conseils. La déclaration "using" est juste là au cas où votre application ne l'a pas déjà. Oui, allez de l'avant et qualifiez pleinement tous les autres noms de classe affichés si vous en avez besoin, en fonction de votre code, mais s'il vous plait, ne votez pas pour une solution parfaitement bonne en étant si pédant. Ce n'est pas l'esprit SO. –

Questions connexes