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

[WinAPI] rejestr logi - nie działa

Ostatnio zmodyfikowano 2011-03-12 15:12
Autor Wiadomość
mefiu512
Temat założony przez niniejszego użytkownika
[WinAPI] rejestr logi - nie działa
» 2011-03-08 20:07:56
Witam mam problem z właściwie dwoma programami.
Celem jest zrobienie listy logowań przy starcie systemu, więc mam 2 programy:
Pierwszy zapisuje go do auto-startu w rejestrze.
Drugi zapisuje logi.
Oto kody:

Ten zapisuje logi:
C/C++
#include <windows.h>
#include <fstream>
using namespace std;

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR lStart, INT nShow )
{
    ofstream plik( "plik.txt", ios::out | ios::app );
    plik << "działa";
    plik.close();
    return 0;
}

Ten wstawia program w/w do run'a w rejestrze:

C/C++
#include <windows.h>

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR lStart, INT nShow )
{
    HKEY klucz;
    CHAR wartosc[] = "C:\\plik.exe";
    DWORD typ_danych = REG_SZ;
   
    RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, & klucz );
    RegSetValueEx( klucz, "SetUp", 0, typ_danych,( LPBYTE ) wartosc, sizeof( wartosc ) );
    RegCloseKey( klucz );
    return 0;
}

Sprawa ma się tak, że program daje klucza do rejestru, ale program się nie uruchamia(albo się uruchamia) i nie tworzy logów. Co jest nie tak ?
P-29009
malan
» 2011-03-08 22:19:30
Nie sprawdzasz w ogóle, czy wystąpiły jakieś błędy- czy plik otwarto poprawnie, czy otwarto klucz i dodano do niego wartość bez błędu. Zapraszam na msdn w celu przyjrzenia się używanym przez Ciebie funkcją bliżej. Aha- GetLastError Twoim przyjacielem.
Programy uruchamiane z rejestru - AutoRun - ten temat również Ci się przyda.
P-29015
mefiu512
Temat założony przez niniejszego użytkownika
» 2011-03-10 19:06:42
Nareszcie...
Sorry, że dopiero teraz odpisuje, ale czasu nie miałem...
Przerobiłem kod tak, żeby pokazywał jaki jest błąd:

C/C++
#include <windows.h>
#include <iostream>

using namespace std;

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR lStart, INT nShow )
{
    HKEY klucz;
    CHAR wartosc[] = "C:\\plik.exe";
    DWORD typ_danych = REG_SZ;
    DWORD errora;
    DWORD errorb;
   
    errora = RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, & klucz );
    errorb = RegSetValueEx( klucz, "SetUp", 0, typ_danych,( LPBYTE ) wartosc, sizeof( wartosc ) );
   
    errora = GetLastError();
    cout << "blad a: " << errora << endl;
   
    errorb = GetLastError();
    cout << "blad b: " << errorb << endl;
   
    RegCloseKey( klucz );
    getchar();
    return 0;
}

błąd a = 0
błąd b = 0
A w samym rejestrze dane wyglądają tak:
Nazwa: SetUp
Typ: REG_SZ
Dane: C:\plik.exe

Plik się jednak nie uruchamia...

Edit:
Plik się uruchamia, w rejestrze klucz jest... ale plik nie tworzy pliku tak jak chciałem. Kiedyś też miałem z tym problem, plik się uruchamiał, lecz nie działał jak powinien, tzn. tak jakby nic nie robił. Więc dlaczego plik nie tworzy mi loga ??


P-29055
DejaVu
» 2011-03-10 22:21:01
Może za mało masz flag?

/edit:
Poczytaj: http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Rejestr/193
P-29062
malan
» 2011-03-10 22:21:37
Sprawdź, czy nie ma pliku (logu) w
C:\Documents and Settings\%nazwa_twojego_profilu%\\...
P-29063
mefiu512
Temat założony przez niniejszego użytkownika
» 2011-03-12 15:12:15
Wielkie dzięki, wszystko jest tak jak ma być :)
Pliki były tam gdzie napisałeś - malan.
A cała reszta działała, wystarczyło zmienić ścieżkę...
 Pozdrawiam, temat zamykam.
P-29101
« 1 »
  Strona 1 z 1