Добавление конкретных путей к приложению, чтобы оно работало из командной строки в Windows - PullRequest
5 голосов
/ 25 июня 2010

Следуя указаниям Microsoft, http://msdn.microsoft.com/en-us/library/ee872121(VS.85).aspx, я могу заставить свою программу заставить программу разрешать динамические библиотеки, необходимые для ее работы.

Поэтому я добавляю значение с полным именем и путем к моему исполняемому файлу и добавляю к этой записи подключ (с именем path) с полным путем к каталогу файлов DLL.

И магия.Оно работает.Я захожу в меню «Пуск» и набираю myprogram.exe, и он запускается и теперь может правильно найти файлы dll.

Тем не менее, если я запускаю командную строку с помощью команды cmd.exe, а затем попробуйтечтобы запустить myprogram.exe не может решить DLL больше.По какой-то причине командная строка, похоже, не учитывает / не читает значения реестра, если он установлен в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths

Любое предложение о том, как я могу получить это поведениеработать из командной строки и из меню «Пуск»?

Ответы [ 3 ]

5 голосов
/ 25 июня 2010

Это правильно. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths используется ShellExecuteEx, а не CreateProcess. Поэтому не все программы будут использовать настройки из App Paths вашего приложения. Если вы хотите определить PATH для cmd.exe, вы можете либо использовать подраздел App Paths с именем cmd.exe, либо использовать старый %SystemRoot%\System32\autoexec.nt файл для изменения PATH переменной среды.

1 голос
/ 09 ноября 2010

Также возможно использовать «START / WAIT app.exe» из командной строки, которая использует ShellExecuteEx.

0 голосов
/ 25 июня 2010

Я сделаю это как можно лучше.

Во-первых, обратите внимание, что оба параметра: cmd и меню запуска \ запуска, запускают все в C: \ WINDOWS \ system32.

Если бы вы были там, тогда это сработало бы.

если вы не хотите помещать его туда, вы можете изменить «переменные среды», щелкнув правой кнопкой мыши на «мой компьютер» -> «свойства» -> «Дополнительно» -> «переменные среды» ».

удачи.

...