News... | Hack-Acad | Downloads | Web-Projekte | Kontakt
HACKACAD - Registry (Code)

Um ein Programm automatisch starten zu lassen, wird in der Regel ein Registry Eintrag vorgenommen. Wichtig hierbei ist das Verzeichnis HKEY_LOCAL_MACHINE (gilt für den Computer unabhängig vom Benutzer), sowie das Benutzerabhängige Verzeichnis HKEY_CURRENT_USER. Oftmals ist der HKLM Zweig durch Benutzerrechte eingeschränkt, so dass keine neuen Registry Einträge durchgeführt werden können. In diesem Fall weicht man auf HKCU aus.

Der Beispiel Code versucht zunächst REGTEST in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run zu hinterlegen. Sollte dies nicht funktionieren, wird auf HKEY_CURRENT_USER gewechselt.

 
 #include <windows.h>
 #include <stdio.h>

 #pragma comment(lib, "Ws2_32.lib")

 HKEY hKey;
 DWORD Variable;
 char buffer[] = "MeinTestWert";
 char szPath[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 int pseudo_bool = 0;

 void main()
 {
  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,szPath,0,KEY_SET_VALUE,&hKey) == ERROR_SUCCESS)
  {
    printf("HKLM Reg Opened\r\n");
	  
    if(RegSetValueEx(hKey,"REGTEST",0,REG_EXPAND_SZ,(LPBYTE)buffer,
                    (DWORD)lstrlen(buffer)+1) == ERROR_SUCCESS)
    {
        printf("HKLM Reg Entry done!\r\n");
    }
    else
    {
        printf("HKLM Reg Entry not possible!\r\n");
        pseudo_bool = 1;
    }
  }
  else
  {
        printf("HKLM Reg Open not possible!\r\n");
        pseudo_bool = 1;
  }
  
    RegCloseKey(hKey);

  if(pseudo_bool==1)
  {
    printf("HKLM Entry failed...now attempting HKCU...\r\n");

    if (RegOpenKeyEx(HKEY_CURRENT_USER,szPath,0,KEY_SET_VALUE,&hKey) == ERROR_SUCCESS)
    {
     printf("HKCU Reg Opened\r\n");
		  
     if(RegSetValueEx(hKey,"REGTEST",0,REG_EXPAND_SZ,(LPBYTE)buffer,
                     (DWORD)lstrlen(buffer)+1) == ERROR_SUCCESS)
     {
        printf("HKCU Reg Entry done!\r\n");
     }
     else
     {
        printf("HKCU Reg Entry not possible!\r\n");
        pseudo_bool = 2;
     }
    }
    else
    {
     printf("HKCU Reg Open not possible!\r\n");
     pseudo_bool = 2;
    }
  }
 }


Wichtige Funktionen in Bezug auf Registry Einträge sind unter anderem "RegQueryValueEx" und "RegCreateKeyEx". Microsoft's MSDN Seiten geben hier ausführlich Auskunft.