Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    [C] creare una chiave nel registro

    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 !

  2. #2
    ciao sono Johnny
    --------------------------
    Utilizza il DOS all'interno di una routine C.
    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 ...
    per scoprire meglio come usare il comando "REG"
    fai una ricerca nella guida in linea di windows.
    ...Terrible warlords, good warlords, and an english song

  3. #3
    grazie mille, proverò sicuramente e non mancherò di dire algi altri come ho risolto il tutto

  4. #4
    hem, non riesco a trovare l'help sul C sul sito microsoft, qualcuno mi sa dare un link perfavore ?

  5. #5
    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 ]

    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");
    cosa faccia mi sembra abbastanza chiaro.

    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

  6. #6
    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

  7. #7
    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 !

  8. #8
    Orig. inviato da TestaDiMucca

    purtroppo non riesco a farlo andare !!
    lo compilo senza problemi, però poi se lo eseguo non succede nulla..
    Spiega meglio cosa vorresti che accadesse.

    ES: se vuoi lanciare un eseguibile all'avvio di windows
    devi inserire il nuovo valore all'interno della chiave RUN:
    codice:
    reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v mio_eseguibile /t REG_SZ /d "C:\Documenti\mio_eseguibile.exe" /f
    dove la parte evidenziata in rosso è il nuovo valore (stringa)
    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()
    codice:
    system("reg add HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v mio_eseguibile /t REG_SZ /d \"C:\\Documenti\\mio_eseguibile.exe\" /f");
    Ti consiglio per il momento di lasciar "riposare" le API
    ...Terrible warlords, good warlords, and an english song

  9. #9
    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

    codice:
    #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;
    che cappero devo fare

  10. #10
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.