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

Autostart programu poprzez wpis w rejestrze systemu (ścieźka)

Ostatnio zmodyfikowano 2014-12-02 09:40
Autor Wiadomość
maly
» 2014-11-28 17:47:39
RegSetValueEx( hkey, "budzik", 0, REG_SZ, argv[ 0 ], strlen( argv[ 0 ] ) );
P-121639
Bajt
Temat założony przez niniejszego użytkownika
» 2014-11-28 19:08:54
Zamiast linijki z inicjalizacją zmiennej PATH?
P-121643
Tomek_z_W11
» 2014-11-28 23:42:54
Nie o to mu chodzi raczej, zreszta sam nie wiem o co mu chodzi.

Problem jest taki:
- musisz dać rozmiar tablicy, np.
const char PATH[ 50 ];

- musisz ją od razu "wypełnić", bo jeżeli to jest tablica const, to potem nie możesz jej modyfikować, więc żeby tego typu zmienne/tablice miały jakikolwiek sens, muszą zostać od razu zainicjowane, np.
const char PATH[ 50 ] = { "ala ma kota" };
 albo bez klamerek
const char PATH[ 50 ] = "ala ma kota";
P-121667
Bajt
Temat założony przez niniejszego użytkownika
» 2014-11-29 18:43:02
Tak, o tym wiem, ale chodzi mi o to, żeby tą tablicę zainicjować ścieżką do programu (czyli zmienną argv). Kolega wyżej podał mi funkcję strcpy, jednak nie wiem, jak jej użyć w tym przypadku. W tym problem.
P-121705
Tomek_z_W11
» 2014-11-29 23:19:26
Obawiam się, że PATH będziesz musiał zmienić na
char * PATH

Bo ten strcpy() przyjmuje dwa tzw. napisy, czyli
char *

Ogólnie to napisać coś ala:

C/C++
char * PATH = new char[ 50 ];
strcpy( PATH, argv[ 0 ] ); //czyli z argv[0] do PATH

I jeszcze jedno. strcpy jest w bibliotece <cstring>
P-121723
Bajt
Temat założony przez niniejszego użytkownika
» 2014-11-30 19:04:52
Wiem, że owa funkcja jest w bibliotece cstring. Spróbowałem tak jak zaleciłeś, jednak kod nie działa. Dla testu, dodałem linijkę system("PAUSE"), na koniec programu, żeby sprawdzić, czy wywoła się przy starcie Windowsa. Jednak nic takiego nie ma miejsca.
C/C++
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <cstring>

using namespace std;

int main( int argc, char * argv[] ) {
   
    HKEY hkey;
    LONG regOpenResult;
   
    char * PATH = new char[ 50 ];
    strcpy( PATH, argv[ 0 ] );
   
    regOpenResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, & hkey );
   
    RegSetValueEx( hkey, "budzik", 0, REG_SZ,( BYTE * ) PATH, strlen( PATH ) );
   
    RegCloseKey( hkey );
   
   
    system( "PAUSE" );
   
    return 0;
}
P-121765
Tomek_z_W11
» 2014-11-30 20:03:30
Heh, to że nie działa to że tak powiem nie moja sprawka, ja wiem tylko tyle, że funkcja strcpy() przyjmuje dwa argumenty:
char *dokąd, char *skąd.

Kompletnie sie nie znam na grzebaniu w rejestrze, a widze, że jakieś tam HKEY'e sie poniewierają...
P-121768
Bajt
Temat założony przez niniejszego użytkownika
» 2014-11-30 20:09:27
No tak, ale zgodnie z tym co piszesz, funkcja jest zadeklarowana dobrze. PATH do miejsce gdzie ma być skopiowana zmienna argv, więc się zgadza. A to, że jest tu kilka operacji na rejestrze nie ma nic do rzeczy, bo problem sprawia linijka, w której zmienna argv ma zostać skopiowana do PATH.
P-121769
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona