Pliki ini na Win7

0

Mam pewien problem z aplikacją napisaną w delphi na windows 7.

Aplikacja zainstalowana jest w katalogu Program Files..
ma plik konfiguracyjny ini w którym znajdują się login, haslo i ścieżka do bazy danych.

Przy uruchamianiu program sprawdza czy te dane są podane, jak nie ma to pokazuje się formatka do wpisania, użytkownik wpisuje, klika zapisz i wszystko trafia do wspomnianego ini..

Uruchamiam program jeszcze raz.. ini się wczytuje.. dane są ok, program idzie dalej... ALE.. jak ten sam plik ini otworzę notatnikiem to wymaganych danych NIE MA!
Program je tam widzi.. a notatnik nie.. o co biega?

Problem jest o tyle większy że inny program również w delphi również musi się dostać do tego ini.. i tych danych NIE widzi podobnie jak notatnik.

Ścieżki na pewno są prawidłowe.
Pod XP problemów nie ma.

0

Uruchamiam program jeszcze raz.. ini się wczytuje.. dane są ok, program idzie dalej... ALE.. jak ten sam plik ini otworzę notatnikiem to wymaganych danych NIE MA!

Hmm? Na pewno otwierasz ten sam plik notatnikiem którego używa Delphi?

Ścieżki na pewno są prawidłowe.

W takim razie to cud :>.

Nie znam się na Delphi, może potrafi czytać nieistniejące dane z pliku (albo np. cachuje sobie gdzieś pliki - jeśli tak to mnie poprawcie). Jeśli jednak nie - wyślij tutaj ten plik w którym danych 'nie ma' - zobaczymy czy faktycznie ich nie ma (a jeśli faktycznie nie ma - podaj trochę więcej informacji, np. kod albo jakiś background).

0

coś gdzies przeczytałem że windows 7 zapisuje modyfikowane pliki z program files gdzieś indziej.. aplikacja która tworzy plik ma dostęp do niego zawsze a inne widzą tylko pierwotną kopię..

0

Ups, wybacz, nie zauważyłem że napisałeś o pisaniu do Program Files (napisałeś o aplikacji) :>.

Otóż krótkie wytłumaczenie - nie możesz pisać do program files.

Dłuższe wytłumaczenie - do Program Files może pisać jedynie administrator. Dobrze zachowująca się aplikacja powinna zapisywać swoje dane w folderze username\AppData. W Delphi ścieżkę do AppData możesz, o ile dobrze wyszukałem, znaleźć na przykład tak: http://www.delphipages.com/forum/showthread.php?t=208928 (albo wersja z tego forum: http://4programmers.net/Forum/Delphi_Pascal/142039-Kopiowanie_do_APPDATA).

Od Windows Vista, programy próbujące pisać do Program Files tak naprawdę zapisują do VirtualStore (czyli userName\AppData\Local\VirtualStore) - na co się właśnie naciąłeś. Jeśli chcesz zmienić to zachowanie, możesz użyć manifestu (tak czy inaczej, tylko administrator może to zrobić, więc tym razem musisz wymusić admina (zły pomysł) albo dostaniesz błąd).

Zresztą - przeczytaj na przykład to: http://stackoverflow.com/questions/3219255/why-do-files-get-placed-c-users-usernameappdata-local-virtualstore-program-fi .

0

@madako: tak jak napisał @msm. W Windows Vista lub 7 mamy mechanizm UAC, który uniemożliwia bez praw Administratora zapis do katalogów innych niż niektóre specjalne jak Moje Dokumenty czy właśnie %AppDAta%. Dobrym nawykiem jest przechowywać i zapisywac wszelkie konfiguracje programu w plikach (na przykład typu ini) do %AppData% i tym samym zaoszczędzić sobie problemów. A temat przenoszę do Newbie, bo dotyczy zarówno podstaw, jak i był tutaj wielokrotnie poruszany.

0
INI := TINIFile.Create('moj_plik.ini');

Nie tworzy w folderze z programem tylko w katalogu Windows. Spróbuj

INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'moj_plik.ini');

1 użytkowników online, w tym zalogowanych: 0, gości: 1