2016-12-24 13 views
0

Ich habe eine VC++ - Konsolenanwendung, die beim Start ausgeführt werden soll. Ich möchte dies tun, indem ich es zur Registrierung hinzufüge Ich habe bereits versucht, was ich in einem anderen Beitrag darüber gefunden habe, aber es hat nicht funktioniert, ich habe mich ausgeloggt und dann wieder angemeldet, aber das Programm nicht gestartet. Hier ist der Code, den ichWie kann ich mein Programm beim Start ausführen lassen, indem ich es zur Registrierung hinzufüge?

verwendet
string progPath = "C:/Users/user/AppData/Roaming/Microsoft/Windows/MyApp.exe"; 
HKEY hkey = NULL; 
long createStatus = RegCreateKey(HKEY_CURRENT_USER, L"/SOFTWARE/Microsoft/Windows/CurrentVersion/Run", &hkey);//Creates a key 


long status = RegSetValueEx(hkey, L"MyApp", 0, REG_SZ, (BYTE *)progPath.c_str(), sizeof(progPath.c_str())); 

Jede Hilfe ist willkommen

Antwort

6

Es gibt drei Probleme mit Ihrem Code.

  1. Sie müssen \ statt / verwenden.

  2. Sie leiten 8-Bit-Ansi-Daten an eine Funktion weiter, die stattdessen 16-Bit-Unicode-Daten erwartet. Verwenden Sie std::wstring anstelle von std::string.

  3. Sie übergeben den falschen Wert für die Datengröße. Es erwartet eine Bytezahl, die den Nullabschluss enthält.

Versuchen Sie stattdessen:

std::wstring progPath = L"C:\\Users\\user\\AppData\\Roaming\\Microsoft\\Windows\\MyApp.exe"; 
HKEY hkey = NULL; 
LONG createStatus = RegCreateKey(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &hkey); //Creates a key  
LONG status = RegSetValueEx(hkey, L"MyApp", 0, REG_SZ, (BYTE *)progPath.c_str(), (progPath.size()+1) * sizeof(wchar_t)); 
+0

Wenn ich diesen Code ausführen, erstellt er das nicht "SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Run" Schlüssel – sharpchain

+0

Oh vergiss lol Ich suchte an der falschen Stelle, ur Sache funktionierte danke – sharpchain

1

Sie dies tun können:

HKEY hKey; 
const char* czStartName = "MyApplication"; 
const char* czExePath = "C:\\Users\\user\\AppData\\Roaming\\Microsoft\\Windows\\MyApp.exe"; 

LONG lnRes = RegOpenKeyEx( HKEY_CURRENT_USER, 
          "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 
          0 , KEY_WRITE, 
          &hKey); 
if(ERROR_SUCCESS == lnRes) 
{ 
    lnRes = RegSetValueEx( hKey, 
          czStartName, 
          0, 
          REG_SZ, 
          (unsigned char*)czExePath, 
          strlen(czExePath)); 
} 

RegCloseKey(hKey); 

die czStartName ist der Name in der Registrierung der Anwendung. czExePath ist der vollständige Pfad der ausführbaren Anwendung, die beim Start ausgeführt wird. und die letzte ist die Länge des vollständigen Pfads Ihres ausführbaren Programms.

  • Wenn Sie auf Windows 7 sind, dann müssen Sie die Anwendung als Administrator ausführen, um die Registrierung bearbeiten zu können. Merken Sie sich Windows 7 verwendet UAC.
  • oder MSVC als Administrator öffnen und dann die Berechtigung zum Bearbeiten der Registrierung haben.

    +0

    Das funktioniert nicht bei all dieser Zeit nichts selbst in der Registrierung auftauchte – sharpchain

    +0

    immer noch nicht funktioniert – sharpchain

    +0

    @sharpchain es für mich funktioniert. – Raindrop7

    Verwandte Themen