Ciao !!sono testa di Mucca!
Volevo sapere come devo fare in C per creare una chiave di registro ed inserirci un valore !!
Ho cercato in rete ma non ho trovato nulla, o quantomeno sono così stupido da non averlo trovato !!
Ciao e grazie !
Ciao !!sono testa di Mucca!
Volevo sapere come devo fare in C per creare una chiave di registro ed inserirci un valore !!
Ho cercato in rete ma non ho trovato nulla, o quantomeno sono così stupido da non averlo trovato !!
Ciao e grazie !
ciao sono Johnny![]()
--------------------------
Utilizza il DOS all'interno di una routine C.
per scoprire meglio come usare il comando "REG"codice:#include <stdio.h> #include <stdlib.h> // ti permette di utilizzare system() main() { system("REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\NUOVA_CHIAVE /v NUOVO_VALORE_STRINGA /t REG_SZ /d "%windir%\MIO_PROGRAMMA.exe /background" /f"); ... etc ... ... etc ...
fai una ricerca nella guida in linea di windows.
...Terrible warlords, good warlords, and an english song
grazie mille, proverò sicuramente e non mancherò di dire algi altri come ho risolto il tutto![]()
hem, non riesco a trovare l'help sul C sul sito microsoft, qualcuno mi sa dare un link perfavore ?
ehm
la stringa da passare alla funzione system() è la seguente
(nell'esempio postato sopra, non avevo considerato i caratteri di escape del C) [tutta colpa del copia/incolla]
cosa faccia mi sembra abbastanza chiaro.codice:system("REG ADD HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\NUOVA_CHIAVE /v NUOVO_VALORE_STRINGA /t REG_SZ /d \"%windir%\\MIO_PROGRAMMA.exe /background\" /f");
p.s. io mi riferivo all'HELP di WINDOWS!!!
menù start\guida in linea e supporto tecnico\
CERCA: REG (generico) REG ADD (aggiungi nuova chiave)
...Terrible warlords, good warlords, and an english song
a chi interessa
tratto dalla guida di win :
Aggiunge una nuova sottochiave o voce al Registro di sistema.
Sintassi
reg add NomeChiave [/v NomeVoce|/ve] [/t TipoDati] [/s separatore] [/d valore] [/f]
Parametri
NomeChiave
Specifica il percorso completo della sottochiave. Per i computer remoti, inserire il nome del computer prima del percorso della sottochiave nel formato \\NomeComputer\PercorsoSottochiave. Se non si specifica NomeComputer, viene utilizzato il computer locale per impostazione predefinita. Utilizzare la sottostruttura appropriata per il percorso. Le sottostrutture valide sono HKLM, HKCU, HKCR, HKU e HKCC.
/v NomeVoce
Specifica il nome della voce da aggiungere nella sottochiave specificata.
/ve
Specifica che la voce aggiunta al Registro di sistema ha un valore null.
/t TipoDati
Specifica il tipo di dati per il valore della voce. TipoDati può essere uno dei seguenti:
REG_SZ
REG_MULTI_SZ
REG_DWORD_BIG_ENDIAN
REG_DWORD
REG_BINARY
REG_DWORD_LITTLE_ENDIAN
REG_LINK
REG_FULL_RESOURCE_DESCRIPTOR
REG_EXPAND_SZ
/s separatore
Specifica il carattere utilizzato per separare più istanze di dati. Viene utilizzato quando è specificato REG_MULTI_SZ come tipo di dati ed è necessario elencare più di una voce. Se non è specificato, il separatore predefinito sarà \0.
/d valore
Specifica il valore della nuova voce del Registro di sistema.
/f
Aggiunge la sottochiave o la voce senza chiedere conferma.
/?
Visualizza informazioni della Guida al prompt dei comandi.
Osservazioni
Non è possibile aggiungere sottostrutture eseguendo questa operazione. Questa versione di Reg non chiede conferma per l'aggiunta di una sottochiave.
Nella tabella riportata di seguito sono elencati i valori restituiti per l'operazione reg add. Valore Descrizione
0 Operazione riuscita
1 Operazione non riuscita
Esempi
Negli esempi riportati di seguito è illustrato l'utilizzo del comando reg add:
reg add \hklm\software\myco /v data /t reg_binary /d fe340ead
reg add "hkcu\software\microsoft\winmine" /v Name3 /t reg_sz /d Anonymous
reg add "hkcu\software\microsoft\winmine" /v Time3 /t reg_dword /d 5
purtroppo non riesco a farlo andare !!
lo compilo senza problemi, però poi se lo eseguo non succede nulla..
e se provassi con le api ?
http://msdn.microsoft.com/library/de...gcreatekey.asp
quale tipo di reg dovrei usare ? il createkey? e come diavolo faccia dirgli che è una api ? gli esempi che ci sono fannoi pena
aiuto !
Spiega meglio cosa vorresti che accadesse.Orig. inviato da TestaDiMucca
purtroppo non riesco a farlo andare !!
lo compilo senza problemi, però poi se lo eseguo non succede nulla..
ES: se vuoi lanciare un eseguibile all'avvio di windows
devi inserire il nuovo valore all'interno della chiave RUN:
dove la parte evidenziata in rosso è il nuovo valore (stringa)codice:reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v mio_eseguibile /t REG_SZ /d "C:\Documenti\mio_eseguibile.exe" /f
e la parte evidenziata in verde è il percorso assoluto al
file (eseguibile) che deve essere lanciato all'avvio di windows.
n.b. Prima di inserire il tutto all'interno della funzione system()
fai qualche prova utilizzando un semplice file batch (.bat)
Inserisci all'interno del file .BAT il codice che ti ho postato sopra.
Ovviamente prima di riavviare il sistema, copia manualmente
un semplice file chiamato "mio_eseguibile.exe"
Nella directory (se non esiste la crei) "C:\Documenti\"
Poi, dopo aver verificato il funzionamento di questa procedura,
inserisci la linea di codice sopra all'interno di un file C/CPP
utilizzando la funzione system()
Ti consiglio per il momento di lasciar "riposare" le APIcodice:system("reg add HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v mio_eseguibile /t REG_SZ /d \"C:\\Documenti\\mio_eseguibile.exe\" /f");![]()
...Terrible warlords, good warlords, and an english song
Se lo scrivo in dos funziona, ma se lo scrivo ( con i doppi \\ ) in system nel *.c me lo compila senza problemi, ma se lo avvio non fa nulla e mi restituisce -1![]()
che cappero devo farecodice:#include <stdio.h> #include <stdlib.h> int main() { system("reg add HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v mio_eseguibile /t REG_SZ /d \" C:\\mio_eseguibile.exe\" /f"); return 0;![]()
i doppi backslash servono a non confondere il compilatore
(singolo backslash + caratter[e/i] = sequenza di escape).
---------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("REG ADD HKLM\\Software\\Microsoft\\Windows\\CurrentVersion \\Run /v mio_eseguibile /t REG_SZ /d \"C:\\Documenti\\mio_eseguibile.exe\" /f");
system("PAUSE");
return 0;
}
-------------------------------------------------
compila ed esegui,
l'eseguibile dovrebbe visualizzati il seguente OUTPUT:
Operazione terminata con successo.
Premere un tasto per continuare . . .
p.s. (banale ma...) la riga di codice in cui c'è system() [vedi CurrentVersion] deve essere scritta tutta in una linea e non come esce formattata [sezionata in Curr e a capo entVersion...] in questa pagina html.
...Terrible warlords, good warlords, and an english song