Program uruchamiany przy starcie systemu i tworzący plik

0

To mój pierwszy post na tym forum, więc witam wszystkich.
Mam problem. Próbuję już drugi dzień stworzyć program, który będzie uruchamiał się przy starcie systemu (system to windows) i tworzył plik.
Zrobiłem coś takiego. Program pierwszy, dodający do rejestru program drugi i kopiujący program drugi na dysk C:

#include <windows.h>

bool zainstaluj( char * miejsce )
{
    HKEY klucz;
    LONG Wynik;
    DWORD Nowy;
    const BYTE * lpData =( const BYTE * ) "C:\\plikstart.exe";
    Wynik = RegCreateKeyEx( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, & klucz, & Nowy );
    if( Wynik == ERROR_SUCCESS )
    {
        RegSetValueEx( klucz, "kl2", 0, REG_SZ, lpData, 256 );
        RegCloseKey( klucz );
    }
    else
    {
        return false;
    }
    return true;
}
int main()
{
    CopyFileA("plikstart.exe","C:\\plikstart.exe", true );
    char miejsce[50] = "C:\\plikstart.exe";
    zainstaluj(miejsce);

}
 

Oraz program nr. 2, który tworzy plik, pisze coś w konsoli a potem czeka aż kliknę jakiś klawisz( to po to żeby sprawdzić czy w ogóle się uruchamia przy starcie systemu ):

#include <fstream>
#include <iostream>
#include <string.h>

int main()
{
    std::fstream plik( "nazwa_pliku.txt", std::ios::out );
    std::string napis = "Napis w pliku";
    plik<<napis;
    std::cout<<"Jakiś tam napis";
    std::cin.get();



}
 

Wszystko pięknie. 0 błędów w kompilacji. Program kopiujący i dodający do rejestru działa bez zarzutu, ale gdy uruchomię ponownie komputer i gdy windows się włączy, program nr. 2 też się włącza, wyświetla okienko konsoli i napis, lecz nie tworzy pliku.

Próbowałem na dwa sposoby stworzyć pliki. Raz użyłem biblioteki fstream, a raz za pomocą chyba stdio.h. Nic nie dało.

0

Może zamiast

fstream plik( "nazwa_pliku.txt", std::ios::out );

daj:

std::ofstream plik( "nazwa_pliku.txt");

tryb zapisywania

std::ofstream plik( "nazwa_pliku.txt", std::ios:app);

tryb dopisywania

0
semar napisał(a):

Może zamiast

fstream plik( "nazwa_pliku.txt", std::ios::out );

daj:

std::ofstream plik( "nazwa_pliku.txt");

tryb zapisywania

std::ofstream plik( "nazwa_pliku.txt", std::ios:app);

tryb dopisywania

Nie działa niestety. Dodam jeszcze, że tylko gdy program startuje przy starcie systemu to plik się nie tworzy. Gdy uruchamiam go normalnie wszystko działa tak jak powinno.

0

Jaki system? Pewnie nie masz uprawnień

0

Pisałem w pierwszym poście, że windows. A uprawnienia to do czego są potrzebne ?

0

Hmm na przestrzeni lat było kilkanaście wersji windowsa... JAKI?? Uprawnienia mogą być potrzebne do pisania w głównym katalogu dysku C

0

Windows 7. Jak już pisałem, program działa bardzo dobrze gdy go uruchamiam normalnie. Problemy są tylko wtedy gdy ma się uruchomić przy starcie systemu. Dlatego chyba raczej to nie wina uprawnień, ale chętnie coś przetestuję jeśli jest szansa, że to rozwiąże mój problem

1

W Win7 trzeba mieć uprawnienia administratora do pisania po katalogu głównym C: jak uruchamiasz normalnie to UAC wyskakuje? Może masz UAC wyłączone. Spróbuj wyszukać też ten plik szukajką, może bieżący katalog jest inny? Próbowałeś podać ścieżki absolutne?

0

Bardzo się zdziwiłem. 3 razy uruchamiałem ponownie komputer, ale jednak to prawda. Po dodaniu ścieżek absolutnych wszystko działa tak jak powinno. Dzięki wielkie :)

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