Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

WinAPI - autostart, otwieranie plików

Ostatnio zmodyfikowano 2016-09-19 20:05
Autor Wiadomość
bathory0xff
Temat założony przez niniejszego użytkownika
WinAPI - autostart, otwieranie plików
» 2016-09-18 21:05:27
Problem da się o tyle prosto wyjaśnić, kod jest nie potrzebny.
Mam program, który czyta ustawienia z pliku config.ini i zapisuje pewne informacje do pliku text.log. Gdy uruchamiam go ręcznie, wszystko działa bez zarzutu. Problem pojawia się przy autostarcie. Program dodany jest to RunOnce obecnego użytkownika (na Run jest to samo jbc). Przy starcie systemu powinien otworzyć te 2 wspomniane pliki i zacząć pracę. Tak jednak nie jest - config.ini nie pozwala się otworzyć, podczas gdy otwarcie text.log jest bezproblemowe. Testując zauważyłem, że zmiana nazwy, utworzenie nowego, przekopiowanie itp pliku config.ini nie zmienia sytuacji. Bez względu na nazwę i rozszerzenie, i zawartość program nie może uzyskać dostępu do pliku. Kiedy natomiast ładuję ustawienia z pliku text.log (to chyba jedyny poprawnie otwierający się plik), program działa bez problemu. To mnie niepokoi. Gdyby każdy plik wyrzucał NULL przy otwieraniu się, szukałbym błędu w kodzie. Tej sytuacji natomiast w ogóle nie rozumiem. Korzystam z systemu W8, testowałem na drugim komputerze z W7 (bez ponowej kompilacji, to samo exe które wyrzuca błąd) i jest to samo.
Korzystam z Code::Blocks.


PS do otwierania pliku używałem CreateFile, std::FILE i std::fstream; każda próba kończy się tak samo - text.log OPEN, innyplik FAIL.
PS2 pliki znajdują się w tym samym folderze co exe.

Edit:
Po dalszych eksperymentach przypomniałem sobie o GetLastError. Zwrócił 2 - ERROR_FILE_NOT_FOUND co jest niemożliwe, plik tak po prostu na chwilę nie może zniknąć. Ktoś spotkał się z podobnym problemem?
P-151810
karambaHZP
» 2016-09-19 09:26:50
Może przeszkadza opcja ukrywania popularnych rozszerzeń? Wyłącz ją.
P-151815
pekfos
» 2016-09-19 13:54:37
Gdy uruchamiam go ręcznie, wszystko działa bez zarzutu. Problem pojawia się przy autostarcie.
Program odpalony przy autostarcie działa w innym katalogu roboczym, niż gdy go odpalasz ręcznie. Na początku programu wywołaj SetCurrentDirectory() z katalogiem z programem.
P-151818
bathory0xff
Temat założony przez niniejszego użytkownika
» 2016-09-19 20:05:04
Dziękuję za odpowiedź, problem rozwiązany.
P-151829
« 1 »
  Strona 1 z 1