Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] inserimento di alcune chiavi nel registro

    Ciao, io dovrei creare delle chiavi sul registro di sistema, ma dato che è la prima volta che utilizzo le API di Windows per questo scopo, mi trovo in difficoltà.

    A questo indirizzo
    http://msdn2.microsoft.com/en-us/library/ms724875.aspx
    ho trovato la funzione che in teoria mi serve.

    Ora, nel codice ho scritto questo:
    codice:
    #include <stdio.h>
    #include <windows.h>
    
    int main()
    {
        // Definisco le variabili che mi serviranno
        HKEY hKey;
        LPCTSTR lpSubKey;
        DWORD Reserved;
        LPTSTR lpClass;
        DWORD dwOptions;
        REGSAM samDesired;
        LPSECURITY_ATTRIBUTES lpSecurityAttributes;
        PHKEY phkResult;
        LPDWORD lpdwDisposition;
        
        // Assegno alle variabili i valori che mi servono
        strcpy(hKey, HKEY_CLASSES_ROOT);
        strcpy(lpSubKey, "Directory\shell");
        
        printf("ciao");
        
        system("pause");
        return 0;
    }/* main */
    Fino a qui ho cercato solo di inserire i valori dei percordi in cui voglio inserire la chiave, ma mi restituisce dei warning sulle istruzioni di copia con strcpy.


    Mi potete illuminare. Io vorrei inserire una mia chiave in HKEY_CLASSES_ROOT\Directory\shell

    Grazie

  2. #2
    Al di là del fatto che HKEY_CLASSES_ROOT è una costante intera, non una stringa, e quindi non ha nessun senso copiarla su un puntatore a stringa ( ), il codice che hai scritto non vuol dire niente: come pretendi di creare una chiave di registro senza nemmeno richiamare la funzione che ti serve?
    Studiati questo esempio e la documentazione di questa funzione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    quell'esempio l'avevo già guardato. ma non riesco comunque.
    Ti spiego meglio cosa voglio fare...

    Io, all'interno della chiave HKEY_CLASSES_ROOT\Directory\shell voglio creare la chiave MiaKey e un sottochiave di MiaKey che si chiama MiaSubKey.
    In modo da avere HKEY_CLASSES_ROOT\Directory\shell\MiaKey\MiaSubKey
    poi vorrei anche assegnare un valore a MiaSubKey.

    Capisco che ho parecchia confusione a riguardo e scusatemi se disco str****te
    ma come ho già detto è la prima volta che le prendo in mano le API con il C.

    Nell'esempio di oregon ho modificato così (solo per provare...ma non voglio aggiungere un file come invece dovrebbe fare questo codice):
    codice:
    #include <windows.h>
    
    #define SIZE 20
    
    int main()
    {
        // Definisco le variabili che mi serviranno
        char buffer[SIZE];
        strcpy(buffer, "D:\\personale\\t080.txt");
        
        HKEY software, mykey;
        RegCreateKey(HKEY_CLASSES_ROOT, "Directory", &software);
        RegCreateKey(software, "Shell", &mykey);
        RegSetValueEx(mykey, "Tuo programma", NULL, REG_SZ, (LPBYTE)buffer, SIZE);
        RegCloseKey(mykey);
        RegCloseKey(software);
        
        system("pause");
        return 0;
    }/* main */
    Ma mi dà il seguente errore
    14 C:\Documents and Settings\hack.OMSOFT\Desktop\hack.c [Warning] passing arg 3 of `RegSetValueExA' makes integer from pointer without a cast

  4. #4
    È un warning, non un errore; puoi ignorarlo senza problemi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    ok, ma in ogni caso il mio problema rimane.
    Come faccio a creare le struttura di chiavi che ho spiegato prima?

    Grazie della pazienza

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Per eliminare il warning, inserisci uno 0 al posto del NULL come terzo parametro, ma il tuo codice dovrebbe essere questo

    codice:
       HKEY shell;
       RegCreateKey(HKEY_CLASSES_ROOT, "Directory\\shell\\MyKey\\MySubKey", &shell);
       RegCloseKey(shell);

  7. #7
    ok. grazie mille. mi ha creato le chiavi. ora vorrei inserire in MySubKey un valore alla voce Dati Valore.

    Come faccio?

  8. #8
    ho risolto.

    ecco il codice che ho fatto:
    codice:
    #include <windows.h>
    
    #define SIZE 20
    
    int main()
    {
        // Definisco le variabili che mi serviranno
        char buffer[SIZE];
        strcpy(buffer, "cmd.exe /K cd %1");
        
        HKEY shell;
        RegCreateKey(HKEY_CLASSES_ROOT, "Directory\\shell\\MyKey\\MySubKey", &shell);
        RegSetValueEx(shell, NULL, 0, REG_SZ, (LPBYTE)buffer, SIZE);
        RegCloseKey(shell);
        
        system("pause");
        return 0;
    }/* main */

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 © 2024 vBulletin Solutions, Inc. All rights reserved.