Autorun

Tags:    c++

<< < 12 > >>
Hej jeg vil gerne lave et program som selv kan finde ud af at starte op sammen med windows. Men synes ikke rigtig jeg har fundet noget brugbart så nu spørger jeg jer :)

Kan i hjælpe mig?

PS jeg bruger Visual c++ 6.0

//Nick



13 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Okay kan se folk ikke har svaret endnu :(

Ved os næsten selv hvordan jeg gør, det eneste jeg mangler er en måde at få mit program til at skrive til registrerings databasen på.

Norgen der kender en god tutorial, eller bare kan forklarer mig hvordan man gør?

//Nick

Du kan skrive til registreringsdatabasen med fx:
Fold kodeboks ind/udKode 

For at skrive: "application/x-msdownload" til "HKEY_CLASSES_ROOT\\.exe\\Content type". Skriv REG /? eller REG ADD /? i cmd.exe for lidt mere information.

Bertel Branders svar var lidt bedre så bare ignorer dette.

[Redigeret d. 27/08-04 20:40:09 af Rasmus(KOEN)]



Okay kan se folk ikke har svaret endnu :(

Ved os næsten selv hvordan jeg gør, det eneste jeg mangler er en måde at få mit program til at skrive til registrerings databasen på.

Norgen der kender en god tutorial, eller bare kan forklarer mig hvordan man gør?

//Nick



Ups.

[Redigeret d. 27/08-04 20:39:18 af Rasmus(KOEN)]



Prøv at kikke på:

http://home20.inet.tele.dk/midgaard/snip/registry.html


#include <windows.h>
#include <iostream.h>

int main(void)
{
HKEY hKey;
DWORD Value = 1;

// Try to read
if(RegOpenKey(HKEY_CURRENT_USER, "Software\\\\MyCompany\\\\MyApp", &hKey) == ERROR_SUCCESS)
{
DWORD Type = REG_SZ, Size = sizeof(DWORD);
RegQueryValueEx(hKey, "Net_S", 0, &Type, (BYTE *)&Value, &Size);
cout << "Got Value: " << Value << endl;
}
else
cout << "Failed to read value" << endl;
RegCloseKey(hKey);

// Try to save the Value
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE, "Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, 0) == ERROR_SUCCESS)
{
Value++;
RegSetValueEx(hKey, "Net_S", 0, REG_SZ, (BYTE *)&Value, sizeof(Value));
cout << "Did write value" << endl;
}
else
cout << "Failed to write value" << endl;
RegCloseKey(hKey);

return 0;
}

Okay har næsten fået det til at virke som det skal, men kan bare ikke får den til at tage i mod andre tegn end tal som værdi, hvordan ændre man dette?

//Nick



For at skrive en streng skal du bruge noget i stil med:

char Buf[] = "Whatever";
RegSetValueEx(hKey, "Net_S", 0, REG_SZ, Buf, strlen(Buf) + 1);



For at skrive en streng skal du bruge noget i stil med:

char Buf[] = "Whatever";
RegSetValueEx(hKey, "Net_S", 0, REG_SZ, Buf, strlen(Buf) + 1);


Kan ikke lige få det til at virke :( Kan jeg ikke få dig til at sætte det ind i det kode jeg postede, sætter det nok ind forkert.

//Nick



Dette ser ud til virke:

Fold kodeboks ind/udKode 


Jeg har fjernet den del der læser, den har du vist ikke brug for.

Hvis du har et entry i reg db'en der ikke er af typen REG_SZ kan du måske ikke få lov til at overskrive den med en REG_SZ, så skal du slette den først (i regedit).



Dette ser ud til virke:

Fold kodeboks ind/udKode 


Jeg har fjernet den del der læser, den har du vist ikke brug for.

Hvis du har et entry i reg db'en der ikke er af typen REG_SZ kan du måske ikke få lov til at overskrive den med en REG_SZ, så skal du slette den først (i regedit).


Tak for det :D Nu virker det perfekt

Lige en sidste ting :) Du skulle vel aldrig vide hvordan man får sit program til selv at finde ud af hvor den ligger på harddisken? Ligesom for eksempel Servermappath funktionen i vbscript.

//Nick



GetModuleFileName, f.ex:

Fold kodeboks ind/udKode 




<< < 12 > >>
t