Operacje na plikach po starcie systemu(autostart).

0

Witam, mam pewien problem, trochę dziwny. Mam program, który ma za zadanie zliczać ilość uruchomień komputera. Swoje wyniki zapisuje w pliku tekstowym. Nie będę przedstawiał kodu, bo nie ma sensu. Problem polega na tym, że program uruchamiany z autostartu nie widzi pliku tekstowego. GetLastError() zwraca kod błędu 2. Jeżeli ten sam program uruchomimy ręcznie wszystko przebiega pomyślnie. Biblioteka, której używam do wykonywania operacji na plikach to: fstream.h.
Próbowałem uruchomić program nawet z 60-sekundowym opóźnieniem za pomocą innego programu dodanego w autostarcie, ale to nic nie dało.
Może ktoś z was wie jak poradzić sobie z tym problemem?

0

Co to znaczy nie widzi pliku tekstowego? Jak mu ścieżkę podajesz?

0

W autostarcie umieszczasz skrót? Jeśli tak to powinieneś ustawić wartość "Rozpocznij w" we właściwościach.

0

Pisząc autostart miałem na myśli wpis w rejestrze. Ścieżka jest do programu, a plik tesktowy znajduje się w tym samym katalogu, więc jako ścieżkę pliku tekstowego podaję jego nazwę wraz z rozszerzeniem.

0

Musisz dodać klucz HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\twojaaplikacja.exe, a w nim dwie wartości:
@="c:\sciezka\do\programu.exe"
Path="c:\sciezka\do"

0
lukasz1235 napisał(a)

Musisz dodać klucz HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\twojaaplikacja.exe, a w nim dwie wartości:
@="c:\sciezka\do\programu.exe"
Path="c:\sciezka\do"

Nie bardzo widzę to jako rozwiązanie problemu, sprawdziłem i raczej nie działa. Powtarzam jeszcze raz program(ten który ma zliczać uruchomienia) nie widzi pliku(plik tekstowy), w którym ma te wyniki zapisać. Program zwraca kod błędu 2 oraz zużywa strasznie dużo CPU.

0

Spróbuj dać ścieżkę bezwzględną, ale nie wiem czy to cię satysfakcjonuje.

0
lukasz1235 napisał(a)

Spróbuj dać ścieżkę bezwzględną, ale nie wiem czy to cię satysfakcjonuje.

Niestety i to nie dało żadnych rezultatów. Jakieś inne pomysły?

@Edit

Zauważyłem, że podczas uruchamiania z autostartu parametr argv[0] posiada tylko nazwę pliku wraz z rozszerzeniem. Po uruchomieniu ręcznie wyświetlana jest całkowita ścieżka. Niby coś, ale to nie wyjaśnia błędu również w przypadku podania w programie ścieżki bezwzględnej do pliku tekstowego.

0

Post pod postem, aby użytkownicy zauważyli tę istotną wiadomość.

Jednak po podaniu bezwzględnej ścieżki do pliku program działa. Szczerze powiedziawszy chciałbym się dowiedzieć dlaczego tak jest ponieważ jak pisałem wcześniej, jest to dosyć dziwne. Również nie bardzo odpowiada mi podawanie całkowitej ścieżki do pliku. Pozdrawiam.

0

lukasz1235 dał Ci rozwiązanie - musisz ustawić katalog roboczy aplikacji, żeby wiedziała, gdzie szukać pliku.

0

Jednak wykorzystałem opcję ze ścieżką bezwzględną, lepsze to niż ustawianie katalogów roboczych w rejestrze;)
Dzięki wszystkim za pomoc, problem rozwiązany.

Pozdrawiam!

0
Gr0sZ napisał(a)

Mam program, który ma za zadanie zliczać ilość uruchomień komputera.
Tą informację możesz odczytać z dziennika zdarzeń np. posługując się PowerShell'em (Get-EventLog) albo WinAPI (Using Windows Event Log ).

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