gienekr napisał(a)
Mam aplikację, której działanie uwarunkowane jest istnieniem dwóch plików.
Problem w tym że jeśli aplikacja zostanie uruchomiona z autostartu to aplikacja nie widzi tych plików.
Jeśli chodzi o system Windows XP spotkałem się już z pewną niejasnością; Mianowicie ścieżka aplikacji (a zarazem jej pierwszy parametr - ParamStr(0)
) może być różny w zależności od tego skąd się ją uruchamia; Z regóły jeśli uruchomisz ręcznie apliakcję z dysku (ścieżka przykładowa: C:\App.exe
) jej pierwszy parametr będzie równy C:\App.exe
, a także właściwość Application.ExeName
przechowuje wartość C:\App.exe
; Czasem (nie napiszę teraz dokładnie bo niebardzo pamiętam) jednak gdy uruchomiłem aplikację ścieżka zmieniała się np. na C:\Documents and Settings\UserName\Pulpit\App.exe
; Nie pamiętam kiedy tak się działo, wiem, że to było bardzo dawno temu jak dopiero co uczyłem się programować, ale ścieżka wskazywała na pulpit;
Problem rozwiązałem dodając klucz do rejestu w gałęzi HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\App.exe
i ustawiając wartość domyślną (wartość o pustym identyfikatorze) na katalog, w którym znajduje się plik wykonywalny aplikacji; Od tamtej pory nigdy nie zdarzyło się, by ścieżka wskazywała na niewłaściwy katalog;
Dlaczego o tym piszę? Ponieważ najprawdopodobniej program szuka tych dwóch plików w katalogu, w którym ich nie ma; Jeżeli apliakcja nie będzie przenoszona (zwykle się tego nie praktykuje) możesz na stałe określić jej ścieżkę, a tym samym pozbyć się bugów dodając wcześniej wspomniany klucz do rejestru systemu;
Jeśli będziesz chciał sprawdzić, czy te dwa plikiistnieją na dysku, pobierzesz ścieżkę z rejestu i dodasz do niej nazwy tych dwóch plików, po czym sprawdzisz funkcją FileExists
czy istnieją i wykonasz dalsze czynności;
W gałęzi HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
większość aplikacji dodaje swoje ścieżki, a także inne dodatkowe informacje; Sprawdź sam; W nowszych Windows'ach będzie tak samo, lub podobnie;