Problème pour écrire dans le registre Windows

wetzzer
Messages postés
1
Date d'inscription
dimanche 14 mai 2017
Dernière intervention
14 mai 2017
- 14 mai 2017 à 00:15 - Dernière réponse : lyndalinad
Messages postés
1
Date d'inscription
vendredi 7 juillet 2017
Dernière intervention
1 août 2017
- 1 août 2017 à 00:12
Bonjour,

J'ai des soucis avec les deux fonctions en bas de mon code qui s'appliquent dans le registre. Lorsque je compile mon code, cela ne marche pas. Devrais-je travailler avec les droits d'admin ? Je vous avoue que je ne sais plus quoi faire...

 #include <windows.h>
//#include <winreg.h>//contient windows.h et est indispensable pour setvalue
#include <stdio.h>
#include "math.h"


HINSTANCE instance;
 
//usb début
 
char szClassName[ ] = "WindowsApp";
 
 
// structure générique
struct DEV_BROADCAST_HDR
    int dbch_size;
int dbch_devicetype;
int dbch_reserved;
};
 
 
struct DEV_BROADCAST_VOLUME
{
    int dbcv_size;
    int dbcv_devicetype;
    int dbcv_reserved;
    int dbcv_unitmask;
    short dbcv_flags;
};
//usb fin
LRESULT CALLBACK
 
procedureFenetrePrincipale(HWND,
                           UINT,
                           WPARAM,
                           LPARAM);
 
BOOL APIENTRY /*/fonction callback avec un type de retour different/*/aPropos_procedure(HWND hDlg,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);
 
 
 
int WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
 
             LPSTR lignesDeCommande, int modeDAffichage)
 
 
 
{
 
    HWND fenetrePrincipale;
 
 
    MSG message;
 
    WNDCLASS classeFenetre;
 
    instance = cetteInstance;
 
 
    classeFenetre.style = 0;
 
    classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
 
    classeFenetre.cbClsExtra = 0;
 
    classeFenetre.cbWndExtra = 0;
 
    classeFenetre.hInstance = NULL;
 
    classeFenetre.hIcon = LoadIcon(NULL, "C:/Users/Nico/Desktop/SmartDef/1490533751_twitter.ico");
 
    classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
 
    classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_ACTIVEBORDER);
 
    classeFenetre.lpszMenuName = NULL;
 
    classeFenetre.lpszClassName = "classeF";
 
 
 
    if(!RegisterClass(&classeFenetre)) return FALSE; //
 
    fenetrePrincipale = CreateWindow("classeF", "SmartDef",WS_OVERLAPPEDWINDOW,
                                     CW_USEDEFAULT,
                                     CW_USEDEFAULT, 1000, 700,
                                     NULL, LoadMenu(instance, "ID_MENU"),
                                     cetteInstance, NULL);
    if (!fenetrePrincipale) return FALSE;
 
    //ShowWindow(fenetrePrincipale, SW_SHOW); // afficher la fenetrePrincipale
 
    UpdateWindow(fenetrePrincipale);
 
 
    while (GetMessage(&message, NULL, 0, 0))
 
    {
 
        TranslateMessage(&message);
 
        DispatchMessage(&message);
 
    }
    return message.wParam;
 
}
 
 
 
 
 

 
 
 
 
LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam)
 
{
    //détection USB
    switch (message)
    {
 
    case WM_DEVICECHANGE:
    {
        if (wParam == DBT_DEVICEARRIVAL)//si arrivé usb
        {
 
            MessageBox(fenetrePrincipale, "Nouveau peripherique, SmartDefense prend le relais",
                       "SmartDef", MB_ICONINFORMATION);
        }
        break;
    }
 
 
 
 
    case WM_DESTROY:// envoyer à la destruction de la fenètre
    {
        PostQuitMessage (0);
        break;
    }
 
 
    default:                      // for messages that we don't deal with
        return DefWindowProc (fenetrePrincipale, message, wParam, lParam);
    }
 
    return 0;
 
}





//démarage avec windows

void addToStartup(const char *path = "C:/Users/Nicolas/Desktop/SmartDef/bin/Release/SmartDef.exe",
                  const char *name = "SmartDef.exe", bool state = true)

{

    HKEY key;

    if(state)
    {
        MessageBox(NULL, "lancement addtostartup", "SmartDef", MB_ICONINFORMATION);



        if( RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0,
                         KEY_ALL_ACCESS, &key)== ERROR_SUCCESS )
        {
            MessageBox(NULL, "impossible d'ouvrir la clef run", "SmartDef", MB_ICONINFORMATION);
        }
        else
        {
            if( RegSetValueEx(key, name, 0, REG_SZ, (BYTE*)path, strlen(path)+1)  != ERROR_SUCCESS )
            {
                MessageBox(NULL, "impossible de définir une nouvelle valeur", "SmartDef", MB_ICONINFORMATION);
            }
            else
            {
                RegCloseKey(key);
            }
        }
    }
    else
    {
        RegCloseKey(key);
        MessageBox(NULL, "echec addtostartup", "SmartDef", MB_ICONINFORMATION);
    }

    return;

}




//les clefs usb ne peuvent pas faire office de clavier
void ecritDef (bool stat = true,  const char *nom = "writeProtect")

{

    HKEY key;

    if (stat)
    {
        MessageBox(NULL, "lancement ecritdef", "SmartDef", MB_ICONINFORMATION);

        if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\StorageDevicePolicies",
                         0, KEY_WRITE, &key) != ERROR_SUCCESS )
        {

            if( RegCreateKeyEx (HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\StorageDevicePolicies"),
                                0, REG_OPTION_NON_VOLATILE, 0, KEY_ALL_ACCESS, 0, &key,NULL)!= ERROR_SUCCESS )
            {
                MessageBox(NULL, "impossible de créer la celf StorageDevicePolicies", "SmartDef", MB_ICONINFORMATION);
            }
            else
            {
                const int valeur = 1;
                if( RegSetValueEx(key, TEXT(nom), 0, REG_DWORD, (LPBYTE)&valeur, (DWORD)sizeof(valeur)) !=ERROR_SUCCESS )
                {
                    MessageBox(NULL, "impossible de créer une valeur dans la clef StorageDevicePolicies",
                               "SmartDef", MB_ICONINFORMATION);

                }
                else
                {
                    RegCloseKey(key);
                }
            }
        }
        else
        {
            RegCloseKey(key);
        }

    }

    else
    {
        RegCloseKey(key);
        MessageBox(NULL, "echec écritdef", "SmartDef", MB_ICONINFORMATION);
    }


    return;
}
Afficher la suite 

Votre réponse

1 réponse

lyndalinad
Messages postés
1
Date d'inscription
vendredi 7 juillet 2017
Dernière intervention
1 août 2017
- Modifié par lyndalinad le 1/08/2017 à 00:19
0
Merci
peut être vous n'avez pas fait l'appel de deux fonctions dans ce cas vous aurez des problèmes après c'est à dire le programme n’exécute pas
Commenter la réponse de lyndalinad

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.