Program uruchamiany z systemem nie tworzy plików [C++]
Ostatnio zmodyfikowano 2015-10-29 17:25
Winner_Of_Death Temat założony przez niniejszego użytkownika |
Program uruchamiany z systemem nie tworzy plików [C++] » 2015-10-28 22:25:06 Witam. Napisałem aktualizator, który działa, jeżeli odpali się go ręcznie. Jeżeli doda się go do autostartu (przez rejestr, bądź poprzez wrzucenie do folderu `Autostart`), program nie tworzy plików, które są niezbędne do jego poprawnego funkcjonowania. Sądziłem, że przyczyną są uprawnienia, lecz nawet gdy jest on uruchamiany jako administrator (co jest uciążliwe - start systemu i zezwalanie na program?) nie funkcjonuje poprawnie. Próbowałem zrobić to samo z prymitywnym kodem: #include <fstream>
int main() { std::fstream plik; plik.open( "test.txt", std::ios::out ); plik << "test"; plik.close(); }
Jednak również nie działa - plik nie jest tworzony. |
|
darko202 |
» 2015-10-29 11:28:02 1. sprawdź, czy program uruchamia się przy autostarcie. np. dodając linię cout >> "program X uruchomił się \n"; 2. sprawdź czy uzyskałeś dostęp do pliku np. std::fstream plik; plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out ); if( plik.good() == true ) { std::cout << "Uzyskano dostep do pliku!" << std::endl; } else std::cout << "Dostep do pliku zostal zabroniony!" << std::endl;
przykład z z http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/3053. . z ww. strony Kiedy nie uzyskamy dostępu do pliku Próba odczytu: •Plik nie istnieje na dysku; •Nie posiadamy uprawnień odczytu do pliku. Próba zapisu: •Nie posiadamy uprawnień pozwalających nam modyfikować plik; •Nie posiadamy uprawnień do katalogu w którym chcemy utworzyć plik; •Nośnik, na którym chcemy dokonać zapisu jest tylko do odczytu. dodatkowo sprawdź użyte flagi - tworzenia nowego pliku 4. ? wydaje mi się :) , że popełniasz błąd w analizie stwierdzając * "napisany program aktualizator działa !" * "a załączony przykładowy program nie działa !" to są dwa różne programy !, choć może mają ten sam kod, ale może też nie ? :) |
|
Monika90 |
» 2015-10-29 16:39:32 Program próbuje utworzyć plik w swoim katalogu bieżącym, to niekoniecznie jest ten katalog w którym znajduje się plik exe, to może być np. C:/windows/system, czy coś tam. Spróbuj użyć ścieżki bezwzględnej. |
|
Winner_Of_Death Temat założony przez niniejszego użytkownika |
» 2015-10-29 17:25:11 Program tworzył plik, ale do tej pory nie wiem gdzie (znalazłem raz w `.../Windows/SystemWOW64`, ale usunąłem go, zrestartowałem komputer, i drugi raz już sie tam nie pojawił - nie wiem skąd się tam wziął). Użyłem ścieżki bezwględnej do folderu `.../AppData/Local` (gdyż nie trzeba się tam bawić z uprawnieniami ;p) i wszystko poprawnie funkcjonuje.
Dziękuję za pomoc ;) |
|
« 1 » |