После руководства от Microsoft, http://msdn.microsoft.com/en-us/library/ee872121 (По сравнению с 85) .aspx, я могу заставить свою программу мочь заставить программу разрешить динамические библиотеки, которые требуются для него работать.
Таким образом, я добавляю значение с полным именем и путем к моему исполняемому файлу, и добавляю подраздел к этой записи (названный путем) с полным путем каталог файлов DLL.
И волшебство.Работает. Я иду меню "Пуск", и вводит myprogram.exe, и оно запускает и теперь может определить местоположение dll файлов правильно.
Однако, если я запускаю командную строку с помощью команды cmd.exe и затем пытаюсь работать, myprogram.exe не может разрешить DLL больше. По некоторым причинам командная строка не делает, кажется, уважает/читает значения реестра, когда это установлено под Путями HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App
Какое-либо предложение к тому, как я могу заставить это поведение работать из командной строки, а также из меню "Пуск"?
Это правильно. 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
.
Я постараюсь сделать все возможное.
Во-первых, обратите внимание, что и команда cmd, и пункты меню run \ start запускают все, что находится в C: \ WINDOWS \ system32.
Если бы у вас была DLL, она бы сработала.
если вы не хотите помещать его туда, вы можете изменить «переменные среды», щелкнув правой кнопкой мыши на «мой компьютер» -> «свойства» -> «Дополнительно» -> «переменные среды» ".
удачи.