Использовать реестр для запуска программы, а также изменить текущий рабочий каталог? - PullRequest
7 голосов
/ 13 мая 2010

Я пытаюсь запустить программу, которую я сделал в этом каталоге:

C:\example\example.exe -someargument

при запуске компьютера. Я пытаюсь использовать этот раздел реестра:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

с ключом:

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

Но моей программе также нужны файлы из каталога C: \ example, но я не могу их найти, поскольку текущий рабочий каталог отличается. Возможно ли сделать что-то подобное в ключе реестра значение

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

чтобы он поменял каталог? Или есть лучшее решение?

Спасибо!

Ответы [ 5 ]

9 голосов
/ 13 мая 2010

Вы можете зарегистрировать свое приложение под следующим ключом реестра (как это делает Reg2Run tool )

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

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

Итак, System.Diagnostics.Run("example.exe"); запустит ваше приложение с указанным рабочим путем.

Или другой способ: написать программу запуска, используя C #. Вы можете сделать то же самое с помощью командлета PowerShell.

var info = new System.Diagnostics.ProcessStartInfo(@"c:\example\example.exe", "-someargument")
{
    WorkingDirectory = @"c:\AnotherPath"
};
System.Diagnostics.Process.Start(info);
4 голосов
/ 13 мая 2010

В начале приложения сделайте следующее (это C #, конвертируйте в C ++):

    using System.IO;
:
:
    Environment.CurrentDirectory = Path.GetDirectoryName(Application.ExecutablePath);
0 голосов
/ 25 января 2019

Вы также можете создать ярлык для программы в папке и ссылаться на этот ярлык в реестре:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Name: example
Type: REG_SZ
Data: "C:\example\example.lnk
0 голосов
/ 13 мая 2010

Если вам нужно загрузить DLL из той же директории, вы можете создать подраздел example.exe в

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

ключ реестра и определить PATH REG_SZ значение example.exe

0 голосов
/ 13 мая 2010

Если файлы всегда будут находиться в том же каталоге, что и ваше приложение, используйте Application.ExecutablePath , чтобы найти рабочий каталог для файлов из вашего кода, тогда вы можете ссылаться на них независимо от того, что.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...