Accueil > > > GESTION BASE DE REGISTRE (LOCAL OU DISTANTE)AVEC DES FONCTIONS API(NEW)
GESTION BASE DE REGISTRE (LOCAL OU DISTANTE)AVEC DES FONCTIONS API(NEW)
Information sur la source
Description
Avec toutes mes excuses de la version précédente, il s'agit d'une première ébauche qui part inadvertance, j'ai mis à disposition. Voici la bonne version: Elle permet dans une base de registre distante ou local(valeur NULL): -Lecture de clé et valeur. -Création d'une clé et valeur. -Suppression d'une clé ou valeur. Ce code contient un petit programme pour tester les fonctions. Rem:Compilation avec Borland C++ 5.5 (pas d'erreur de compil).
Source
- //----------------------------------------------------------------------------
- // Designation : Gestion base de registre
- // Auteur : UKR6900
- // Date : 01/06/2006
- // Date dernier MAJ : 03/06/2006
- // D'après le Prg de :
- //----------------------------------------------------------------------------
-
- #include <stdio>
- #include <stdlib>
- #include <windows>
- #include <ostream>
-
-
- const int cstMaxRegLength = 1024;
-
- //------------------------------------------------------------------------------
- // FONCTION : QuesryKey
- // DESCRIPTION : Permet de lire la valeur d'une clé de regsitre
- //-------------------------------------------------------------------------------
- string GetValueData(HKEY hkTopKey, string lpSubKey, string lpValueName){
- HKEY hkKey;
- DWORD lpType, dwDataSize = cstMaxRegLength;
-
- //Receptionne la valeur de réception lecture clé registre
- unsigned char * lpData = new unsigned char[cstMaxRegLength];
-
- //Receptionne la valeur de réception lecture clé registre
- char * rValue = new char[cstMaxRegLength];
- rValue[0] = '\0';
- //Lecture de la clé registre si ok passe à la suite...
- if (RegOpenKeyEx(hkTopKey,lpSubKey.c_str(),0,KEY_READ,&hkKey) == ERROR_SUCCESS){
-
- if (RegQueryValueEx(hkKey,lpValueName.c_str(),NULL,&lpType,lpData,&dwDataSize) == ERROR_SUCCESS){
- //déchiffrage des différents type de clé dans registry
- switch ((int)lpType){
-
- case REG_BINARY:
- itoa((u_int)(lpData[0]),rValue, 10);
- strcat(rValue,".");
- itoa((u_int)(lpData[1]),(char*)(rValue+strlen(rValue)),10);
- strcat(rValue,".");
- itoa((u_int)(lpData[2]),(char*)(rValue+strlen(rValue)),10);
- strcat(rValue,".");
- itoa((u_int)(lpData[3]),(char*)(rValue+strlen(rValue)),10);
- break;
-
- case REG_DWORD:
- itoa(*(int*)(lpData),rValue,10);
- break;
-
- case REG_EXPAND_SZ:
- rValue=(char *)lpData;
- break;
-
- case REG_MULTI_SZ:
- rValue=(char *)lpData;
- break;
-
- case REG_SZ:
- rValue=(char *)lpData;
- break;
- }//end switch
- }//end if
- RegCloseKey(hkKey);
- }//end if
- return rValue;
- }//end function
-
- //------------------------------------------------------------------------------
- // FONCTION : CreateKey
- // DESCRIPTION : Permet de creer une cle, une valeur et de modifier une valeur
- //-------------------------------------------------------------------------------
- long CreateKey(HKEY hkTopKey,const char *lpSubKey,const char *lpClass,const char *lpData){
- HKEY keyHandle;
- DWORD lpdw;
- //Afin de placer la valeur vous devez indiquer la longueur du lpData.
- int aLen = strlen(lpData) + 1;
-
- //Ceci créera la clef si elle n'existe pas ou ne la met pas à jour s'il elle existe.
- if ( RegCreateKeyEx(hkTopKey,lpSubKey,0,"Anything",REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,0,&keyHandle,&lpdw)== ERROR_SUCCESS){
- //Ceci écrira les données à la clef nouvellement créée ou les mettra à jour.
- long rtn=RegSetValueEx(keyHandle,lpClass,0,REG_SZ,(LPBYTE)lpData,aLen);
- //il faut fermer la cle de registre
- RegCloseKey(keyHandle);
- return rtn;
- }//end if
-
- //ferme le canal de communication (handle)
- RegCloseKey(hkTopKey);
-
- return 1;
- }//end function
-
- //---------------------------------------------------------------------------------
- // FONCTION : DeleteKey
- // DESCRIPTION : Permet de supprimer une cle et les valeurs contenues dans la cle
- //----------------------------------------------------------------------------------
- long DeleteKey(HKEY hkTopKey,char *clpPathKey){
- HKEY hkKey;
- //Verifie si la cle specifiee existe
- if (RegOpenKeyEx(hkTopKey,clpPathKey,0,KEY_READ|KEY_WRITE,&hkKey) == ERROR_SUCCESS){
- //Efface la cle
- long rtn=RegDeleteKey(hkTopKey,clpPathKey);
- RegCloseKey(hkTopKey);
- return rtn;
- }//end if
-
- //ferme le canal de communication (handle)
- RegCloseKey(hkTopKey);
- return 1;
- }//end function
-
- //------------------------------------------------------------------------------
- // START PROGRAM
- //-------------------------------------------------------------------------------
- int main(){
- string NomPc; //Si le pc est locale
- string Valeur; //Récupére la valeur de la clé
- // string NomPc = "\\\\PC050001494"; //Si le pc est distant
- int error = 0;
- HKEY hkKey;
-
- //-------------------------------------------------------------
- //Connection à distance sur le pc Remote ou locale
- if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) != ERROR_SUCCESS){
- printf("Ordinateur %s non trouvé\n", NomPc);
- error = 2;
- }else {
- Valeur = GetValueData(hkKey,"SOFTWARE\\Microsoft\\Internet Connection Wizard","InstallationDirectory");
-
- cout << Valeur << endl;
- }//end if
- //-------------------------------------------------------------
- //cree une cle et une valeur dans la base de registre
- if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) != ERROR_SUCCESS){
- printf("Ordinateur %s non trouvé\n", NomPc);
- error = 2;
- }else {
- if(CreateKey(hkKey,"Software\\Folder1","MyKey","MyValue")== ERROR_SUCCESS)
- cout << "création réussie" << endl;
- else
- cout << "Problème de création!" << endl;
- //end if
- }//end if
- //-------------------------------------------------------------
- //cree une cle et une valeur dans la base de registre
- if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) != ERROR_SUCCESS){
- printf("Ordinateur %s non trouvé\n", NomPc);
- error = 2;
- }else {
- if(DeleteKey(hkKey,"Software\\Folder1")== ERROR_SUCCESS)
- cout << "Effacement réussie" << endl;
- else
- cout << "Problème de la suppression!" << endl;
- //end if
- }//end if
- //-------------------------------------------------------------
- return error;
- }//end programme
-
- //------------------------------------------------------------------------------
- // END PROGRAM
- //-------------------------------------------------------------------------------
-
//----------------------------------------------------------------------------
// Designation : Gestion base de registre
// Auteur : UKR6900
// Date : 01/06/2006
// Date dernier MAJ : 03/06/2006
// D'après le Prg de :
//----------------------------------------------------------------------------
#include <stdio>
#include <stdlib>
#include <windows>
#include <ostream>
const int cstMaxRegLength = 1024;
//------------------------------------------------------------------------------
// FONCTION : QuesryKey
// DESCRIPTION : Permet de lire la valeur d'une clé de regsitre
//-------------------------------------------------------------------------------
string GetValueData(HKEY hkTopKey, string lpSubKey, string lpValueName){
HKEY hkKey;
DWORD lpType, dwDataSize = cstMaxRegLength;
//Receptionne la valeur de réception lecture clé registre
unsigned char * lpData = new unsigned char[cstMaxRegLength];
//Receptionne la valeur de réception lecture clé registre
char * rValue = new char[cstMaxRegLength];
rValue[0] = '\0';
//Lecture de la clé registre si ok passe à la suite...
if (RegOpenKeyEx(hkTopKey,lpSubKey.c_str(),0,KEY_READ,&hkKey) == ERROR_SUCCESS){
if (RegQueryValueEx(hkKey,lpValueName.c_str(),NULL,&lpType,lpData,&dwDataSize) == ERROR_SUCCESS){
//déchiffrage des différents type de clé dans registry
switch ((int)lpType){
case REG_BINARY:
itoa((u_int)(lpData[0]),rValue, 10);
strcat(rValue,".");
itoa((u_int)(lpData[1]),(char*)(rValue+strlen(rValue)),10);
strcat(rValue,".");
itoa((u_int)(lpData[2]),(char*)(rValue+strlen(rValue)),10);
strcat(rValue,".");
itoa((u_int)(lpData[3]),(char*)(rValue+strlen(rValue)),10);
break;
case REG_DWORD:
itoa(*(int*)(lpData),rValue,10);
break;
case REG_EXPAND_SZ:
rValue=(char *)lpData;
break;
case REG_MULTI_SZ:
rValue=(char *)lpData;
break;
case REG_SZ:
rValue=(char *)lpData;
break;
}//end switch
}//end if
RegCloseKey(hkKey);
}//end if
return rValue;
}//end function
//------------------------------------------------------------------------------
// FONCTION : CreateKey
// DESCRIPTION : Permet de creer une cle, une valeur et de modifier une valeur
//-------------------------------------------------------------------------------
long CreateKey(HKEY hkTopKey,const char *lpSubKey,const char *lpClass,const char *lpData){
HKEY keyHandle;
DWORD lpdw;
//Afin de placer la valeur vous devez indiquer la longueur du lpData.
int aLen = strlen(lpData) + 1;
//Ceci créera la clef si elle n'existe pas ou ne la met pas à jour s'il elle existe.
if ( RegCreateKeyEx(hkTopKey,lpSubKey,0,"Anything",REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,0,&keyHandle,&lpdw)== ERROR_SUCCESS){
//Ceci écrira les données à la clef nouvellement créée ou les mettra à jour.
long rtn=RegSetValueEx(keyHandle,lpClass,0,REG_SZ,(LPBYTE)lpData,aLen);
//il faut fermer la cle de registre
RegCloseKey(keyHandle);
return rtn;
}//end if
//ferme le canal de communication (handle)
RegCloseKey(hkTopKey);
return 1;
}//end function
//---------------------------------------------------------------------------------
// FONCTION : DeleteKey
// DESCRIPTION : Permet de supprimer une cle et les valeurs contenues dans la cle
//----------------------------------------------------------------------------------
long DeleteKey(HKEY hkTopKey,char *clpPathKey){
HKEY hkKey;
//Verifie si la cle specifiee existe
if (RegOpenKeyEx(hkTopKey,clpPathKey,0,KEY_READ|KEY_WRITE,&hkKey) == ERROR_SUCCESS){
//Efface la cle
long rtn=RegDeleteKey(hkTopKey,clpPathKey);
RegCloseKey(hkTopKey);
return rtn;
}//end if
//ferme le canal de communication (handle)
RegCloseKey(hkTopKey);
return 1;
}//end function
//------------------------------------------------------------------------------
// START PROGRAM
//-------------------------------------------------------------------------------
int main(){
string NomPc; //Si le pc est locale
string Valeur; //Récupére la valeur de la clé
// string NomPc = "\\\\PC050001494"; //Si le pc est distant
int error = 0;
HKEY hkKey;
//-------------------------------------------------------------
//Connection à distance sur le pc Remote ou locale
if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) != ERROR_SUCCESS){
printf("Ordinateur %s non trouvé\n", NomPc);
error = 2;
}else {
Valeur = GetValueData(hkKey,"SOFTWARE\\Microsoft\\Internet Connection Wizard","InstallationDirectory");
cout << Valeur << endl;
}//end if
//-------------------------------------------------------------
//cree une cle et une valeur dans la base de registre
if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) != ERROR_SUCCESS){
printf("Ordinateur %s non trouvé\n", NomPc);
error = 2;
}else {
if(CreateKey(hkKey,"Software\\Folder1","MyKey","MyValue")== ERROR_SUCCESS)
cout << "création réussie" << endl;
else
cout << "Problème de création!" << endl;
//end if
}//end if
//-------------------------------------------------------------
//cree une cle et une valeur dans la base de registre
if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) != ERROR_SUCCESS){
printf("Ordinateur %s non trouvé\n", NomPc);
error = 2;
}else {
if(DeleteKey(hkKey,"Software\\Folder1")== ERROR_SUCCESS)
cout << "Effacement réussie" << endl;
else
cout << "Problème de la suppression!" << endl;
//end if
}//end if
//-------------------------------------------------------------
return error;
}//end programme
//------------------------------------------------------------------------------
// END PROGRAM
//-------------------------------------------------------------------------------
Historique
- 02 juin 2006 08:47:11 :
- prob texte
- 02 juin 2006 20:15:20 :
- Modif faites suivant les remarques données
par excrt saut pour la libération de la mémoire
sur delete [] lpData ou je n'ai plus aucune valeur de retour ???
merci pour les remarques.
- 03 juin 2006 20:36:58 :
- Changement de certaim pointeur char* en string
tests sur la fonction GetValueData avec différentes recherches ok
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Registre ou API windows [ par Will ]
Je souhaite recuperer les infos d'un pc (c a d la carte reseau, la carte son, le type de clavier etc...).Que dois-je utiliser, la base de registe wind
API capte l'écran [ par Bin Laden ]
Salut, Je cherche une fonction API qui capte le contenu de l'écran.
QU'EST-CE QU'UNE API ? [ par ronan ]
Je suis débutant et j'aimerais bien avoir une définition d'une Api. J'en entends beaucoup parler mais je sais pas trop ce que sais.Merci.
API qui recupere son propre path [ par NetCommando ]
je veux savoir comment une API recupere son prapre pathdu genre c:\app.exe , pour une aplication nomé "app"merci
base de registre [ par ciberfred ]
C quoi les fonctions pour creer/ecrire/supprimerqqch dans la base de registre.genre je veus que dans la base de registre au 1erlancement de mon apli j
Lire dans la base de registre en C++ [ par chris ]
BonjourJe recherche un petit programme C++ qui me permette de lire dans la base de registre.Merci pour votre aide.
API pour visualiser des pages HTML???????? [ par Tropdemalaveclesapi ]
QQN connait une api pour afficher à l'écran une page HTML? merci à tous de réfléchir à la question!
UTILISATIONS D'API [ par DEL ]
comment utiliser les api findwindow, findwindowex et sendmessage en C ?merci d'avance =) ++DEL
base de registre [ par skysee ]
bonjour,je voulais savoir si qqun avait une liste de clé de la base de registre ou un site ou il 'yen a beaucoup de répertoriées.merci
plusieurs dialog [API] [ par Xs ]
voila, je faisait un prog, et pis tout d'un coup, j'ai eu envie de changer son design, qui été deja sous API WIN32.ce design consiste a avoir une dial
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|