Witam :)
Mam mały problem, a mianowicie jak dodać programowo ścieżkę systemową w XP nie restartując kompa, chodzi mi o coś takiego co np. robi Delphi że szukając bibliotek każdy program wyszukuje w lokalizacjach systemowych i np. Borland\bin i wiele innych jest właśnie kolejną systemową lokalizacją.
Starsze Windowsy od XP miały wszystko w AUTOEXEC.BAT nowe w rejestrze, ale NT jest dynamiczny i jest jakaś funkcja na odświeżenie ścieżek.
W Win9x i NT jest klucz HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Dodaj tam jako nazwę klucz swój program, np. MyProg.exe a wartości domyślnej tego klucza ścieżkę + opcjonalnie nazwę pliku. Nazwa klucza musi być z .exe bo inaczej nie wypali.
Teraz jak wpiszesz to nazwę w Start->Uruchom to ci się otworzy plik lub katalog. Nie wymaga to restartu i powinno działać także pod Win9x
Znaczy sie nie o to mi chodziło, chyba źle mnie zrozumiałeś.
Mi chodzi o to by system wykrywał w kilku moich ścieżkach biblioteki dll.
Tak jak np. Borland\bin czy tam skopiujesz czy do System32 to na to samo wyjdzie.
Jakoś chyba wszystkie kompilatory 32-bitowe tak rejestrują swoje ścieżki podczas instalacji.
Może się mylę ale chyba chodzi o zdefiniowanie zmiennej systemowej.
Delphi i inne programy dodają tam linijkę PATH z wartością zmiennej typu:
C:\Program Files\Borland\Delphi7\Bin;C:\Program Files\Borland\Delphi7\Projects\Bpl;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Common Files\Adaptec Shared\System;C:\Program Files\DiskeeperLite
gdzie ; oddziela kolejne zmienne innych lokalizacji programów.
Jak dodac nową zmienną ?:
Panel Sterowania -> System -> Zaawansowane -> Zmienne środowiskowe -> (Zmienne systemowe -> Nowa)
A siedzi to tutaj:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment ; Path
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Environment ; Path
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment ; Path
Opi napisał(a)
Może się mylę ale chyba chodzi o zdefiniowanie zmiennej systemowej. (...)
Tak, ale on napisał, że ma być bez restartu, nie napisałeś jak to zrobić.
Żeby ścieżka wprowadzona w zmiennej systemowej PATH zaczeła być widoczna bez wylogowania się musisz wysłać WM_SETTINGCHANGE jako broadcast, czyli do wszystkich okien.
Microsoft bardzo ładnie to opisuję w artykule KB104011
Nie działa to jednak pod Win9x :/ bo tam wszystko deklaruje się w Autoexec.bat