WinAPI - autostart, otwieranie plików
Ostatnio zmodyfikowano 2016-09-19 20:05
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? |
|
karambaHZP |
» 2016-09-19 09:26:50 Może przeszkadza opcja ukrywania popularnych rozszerzeń? Wyłącz ją. |
|
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. |
|
bathory0xff Temat założony przez niniejszego użytkownika |
» 2016-09-19 20:05:04 Dziękuję za odpowiedź, problem rozwiązany. |
|
« 1 » |