• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Autostart CMD.

0 głosów
308 wizyt
pytanie zadane 5 kwietnia 2019 w C i C++ przez FaloY Bywalec (2,200 p.)

Cześć mam oto taki kod:

...To jest w "int main(void)"

	int test,create; 
	test=test_key(); 
	if (test==2) // Create key. 
	{ 
		char *path="C:\\WINDOWS\\system32\\lsass.exe";
		create=create_key(path); 
	} 

Kolejna część:
 

int test_key(void)
{
	int check; 
	HKEY hKey; 
	char path[BUFSIZE]; 
	DWORD buf_length=BUFSIZE; 
	int reg_key; 
	reg_key=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE,&hKey); 
	if(reg_key!=0) 
	{ 
		check=1; 
		return check; 
	} 
	reg_key=RegQueryValueEx(hKey,"Kkey",NULL,NULL,(LPBYTE)path,&buf_length); 
	if((reg_key!=0)||(buf_length>BUFSIZE))
	{
		check=2;
	}
	if(reg_key==0)
	{
		check=0; 
		RegCloseKey(hKey); 
	}
}
int create_key(char *path) 
{
	int reg_key,check; 

	HKEY hkey; 
	reg_key=RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hkey); 
	
	if(reg_key==0) 
	{ 
		RegSetValueEx((HKEY)hkey,"Kkey",0,REG_SZ,(BYTE *)path,strlen(path)); 
		{
			check=0; 
		}
		return check; 
	} 
	if(reg_key!=0) 
	{
		check=1; 
	}
	return check;
}

Tylko problem jest w tym, że program nie uruchamia się przy starcie. Jakieś porady? Dzięki.

2 odpowiedzi

0 głosów
odpowiedź 5 kwietnia 2019 przez j23 Mędrzec (175,060 p.)

Zgaduje, że odpalasz program z uprawnieniami użytkownika, a dostęp do HKLM wymaga uprawnień administratorskich. Spróbuj z HKEY_CURRENT_USER.

komentarz 5 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Odpalam z uprawnieniami administratora.
komentarz 6 kwietnia 2019 przez j23 Mędrzec (175,060 p.)

Popraw to:

RegSetValueEx((HKEY)hkey, "Kkey", 0, REG_SZ, (BYTE *)path, strlen(path) + 1);

 

komentarz 7 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Chodzi hkey?
komentarz 7 kwietnia 2019 przez j23 Mędrzec (175,060 p.)

Serio, nie widzisz różnicy? Chodzi o strlen(path) + 1. Rozmiar danych musi uwzględniać zero kończące łańcuch znakowy.

komentarz 7 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Jak mam to zrobić? NIe rozumiem do teraz.
komentarz 7 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Nie chodzi czasami o uprawnienia na jakich bazuję aplikacja?
komentarz 8 kwietnia 2019 przez j23 Mędrzec (175,060 p.)

Przecież moja odpowiedź sugerowała, że może być problem z uprawnieniami w dostępie do linii HKLM. Twierdziłeś, że odpalasz program w trybie administratora, więc problemu być nie powinno od tej strony.

 

Poprawiłeś wywołanie RegSetValueEx na te, które podałem we wcześniejszym komentarzu?

komentarz 8 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Tak. Program dalej się nie odpala przy starcie systemu
komentarz 8 kwietnia 2019 przez j23 Mędrzec (175,060 p.)

Próbowałeś dodać wartość w linii HKEY_CURRENT_USER? Ilu bitowy jest system i aplikacja?

 

Próbowałeś bezpośrednio wywołać create_key, bez testowania funkcją test_key?

komentarz 8 kwietnia 2019 przez j23 Mędrzec (175,060 p.)

Spróbuj tak:

int create_key(const char *path) 
{
 	HKEY hkey; 

	int reg_key = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
							"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 
							0, 
							KEY_WOW64_64KEY | KEY_SET_VALUE, 
							&hKey); 

	if(reg_key == ERROR_SUCCESS)
	{
		reg_key = RegSetValueEx((HKEY)hkey, "Kkey", 0, REG_SZ, (BYTE *)path, strlen(path) + 1);
		RegCloseKey(hKey); 
	}
	return reg_key == ERROR_SUCCESS ? 0 : 1;
}

Nie wiem, czy dobre wartości zwraca ta funkcja, bo używasz magicznych liczb. Założyłem, że 0 to sukces.

0 głosów
odpowiedź 5 kwietnia 2019 przez DeBos123 Nałogowiec (44,940 p.)
Sprawdzałeś czy klucz jest w ogóle w rejestrze?
komentarz 5 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Tak, żadnego śladu.
komentarz 5 kwietnia 2019 przez DeBos123 Nałogowiec (44,940 p.)
komentarz 5 kwietnia 2019 przez FaloY Bywalec (2,200 p.)
Dzięki, postaram się to ogarnąć

Podobne pytania

0 głosów
0 odpowiedzi 44 wizyt
0 głosów
2 odpowiedzi 188 wizyt
0 głosów
2 odpowiedzi 221 wizyt
pytanie zadane 29 lipca 2018 w Systemy operacyjne, programy przez niezalogowany

88,363 zapytań

136,963 odpowiedzi

305,690 komentarzy

58,632 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...