[C]Ecrire dans la base de registre ?
Fermé
Reaper
-
25 juin 2004 à 17:20
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 - 28 juin 2004 à 09:33
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 - 28 juin 2004 à 09:33
A voir également:
- [C]Ecrire dans la base de registre ?
- Registre windows - Guide
- Formules excel de base - Guide
- Ecrire en gras sur whatsapp - Guide
- Ecrire en miroir - Guide
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
5 réponses
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
25 juin 2004 à 17:44
25 juin 2004 à 17:44
salut,
Avec L'api win3é tu peux acceder à la base de registre en utilisant la bibliotheque windows.h...
voici un bour de code (que tu drvra legerement modifier car il etait destiné à autre chose) dans lequel il y a le moyen d'ecrire dans une base de registre:
Bon la ca permet d ecrire une valeur de type chaine de caractere dans le registre defini par le chemin d'accé de la clé dans la chaine szKEY faut lui passer la valeur et le nom szTXT
voila le meme pour un int
et voila pour un double
t'inquiete pas des : JNIEXPORT jint JNICALL et des jint ou j string en parametre c etait pour faire une interface jni avec le java..
tu reprend le code dans les fonction et tu le replace dans une fonction c normal..ca devrai marcher...
Avec L'api win3é tu peux acceder à la base de registre en utilisant la bibliotheque windows.h...
voici un bour de code (que tu drvra legerement modifier car il etait destiné à autre chose) dans lequel il y a le moyen d'ecrire dans une base de registre:
#include <jni.h> #include <windows.h> #include <stdio.h> #include "JniWin32.h" #include <tlhelp32.h> #include <string.h> #include <commctrl.h> #pragma comment(lib,"comctl32.lib") JNIEXPORT jint JNICALL Java_FoncWin32_SetRegValueText(JNIEnv *env, jobject obj, jstring chemin, jstring nom, jstring value) { //declaration des variables int returnValue = 0; HKEY hk; //recuperation des arguments const char *szKEY = (*env)->GetStringUTFChars(env, chemin, 0); const char *szTXT = (*env)->GetStringUTFChars(env, nom, 0); const char *valeur = (*env)->GetStringUTFChars(env, value, 0); //preparation RegCreateKeyEx(HKEY_LOCAL_MACHINE, szKEY, 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &hk, 0); //on recupere la taille de la clé returnValue=RegSetValueEx(hk, szTXT, 0, REG_SZ, (BYTE*)valeur, strlen(valeur)); //fermeture RegCloseKey(hk); return returnValue; }
Bon la ca permet d ecrire une valeur de type chaine de caractere dans le registre defini par le chemin d'accé de la clé dans la chaine szKEY faut lui passer la valeur et le nom szTXT
voila le meme pour un int
JNIEXPORT jint JNICALL Java_FoncWin32_SetRegValueInt(JNIEnv *env, jobject obj, jstring chemin, jstring nom, jint valeur) { //declaration des variables int returnValue = 0; HKEY hk; //recuperation des arguments const char *szKEY = (*env)->GetStringUTFChars(env, chemin, 0); const char *szINT = (*env)->GetStringUTFChars(env, nom, 0); RegCreateKeyEx(HKEY_LOCAL_MACHINE, szKEY, 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &hk, 0); //on recupere la taille de la clé returnValue = RegSetValueEx(hk, szINT, 0, REG_DWORD, (BYTE*)&valeur, 4); RegCloseKey(hk); if(returnValue!=ERROR_SUCCESS) return 1234567; return returnValue; }
et voila pour un double
JNIEXPORT jint JNICALL Java_FoncWin32_SetRegValueDouble(JNIEnv *env, jobject obj, jstring chemin, jstring nom, jdouble valeur) { //declaration des variables int returnValue = 0; HKEY hk; //recuperation des arguments const char *szKEY = (*env)->GetStringUTFChars(env, chemin, 0); const char *szDBL = (*env)->GetStringUTFChars(env, nom, 0); //preparation RegCreateKeyEx(HKEY_LOCAL_MACHINE, szKEY, 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &hk, 0); //on recupere la taille de la clé returnValue=RegSetValueEx(hk, szDBL, 0, REG_BINARY, (BYTE*)&valeur, 8); //fermeture RegCloseKey(hk); return returnValue; }
t'inquiete pas des : JNIEXPORT jint JNICALL et des jint ou j string en parametre c etait pour faire une interface jni avec le java..
tu reprend le code dans les fonction et tu le replace dans une fonction c normal..ca devrai marcher...
Le probleme est que je n'ai acces qu'au DOS (et encore) et a ma LINUX, ca marchera pas sous linux si ?
Et sous DOS ?
Sinon, merci pour ton aide
Et sous DOS ?
Sinon, merci pour ton aide
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
26 juin 2004 à 11:51
26 juin 2004 à 11:51
Comment ca tu n'a accé qu au dos??? si tu peux faire du dev en c/c++ sous windows ca ca marche sans probleme...
Par contre il est klr que ceci ne marche pas sous linux puisque la on s appuie sur la bibliotheque system de windows (windows.h) pour linux il fut s appuyer sur la bibliotheque systeme de linux et regarder quelle est la fonction equivalente à RegCreateKeyEx...stoo
Par contre il est klr que ceci ne marche pas sous linux puisque la on s appuie sur la bibliotheque system de windows (windows.h) pour linux il fut s appuyer sur la bibliotheque systeme de linux et regarder quelle est la fonction equivalente à RegCreateKeyEx...stoo
Bon, en gros mon pb c'est que suite a une modif de ma base de registre j'ai le pb suivant (cf lien au debut de la discussion): je ne peux plus acceder a mon XP ("il me met un ecran de login que j'ai pas d'habitude et ensuite il bloque qd je clique sur OK).
Dc il me reste le DOS (et encore, mme avec un disquette boot je peux acceder a mon lecteur C mais pas lire/ ecrire dessus ...
Par contre qd je vais sous linux qui est sur un disque separé, je peux acceder a mon C et lire/ecrire.
Dc je veux modifier ma base de registre de mon XP sans etre sous win et meme si possible en etant sous linux (mais la j'y crois pas trop :))
Pas mal comme prob hein :)
Dc il me reste le DOS (et encore, mme avec un disquette boot je peux acceder a mon lecteur C mais pas lire/ ecrire dessus ...
Par contre qd je vais sous linux qui est sur un disque separé, je peux acceder a mon C et lire/ecrire.
Dc je veux modifier ma base de registre de mon XP sans etre sous win et meme si possible en etant sous linux (mais la j'y crois pas trop :))
Pas mal comme prob hein :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
28 juin 2004 à 09:33
28 juin 2004 à 09:33
Acceder à la base de registre d'un windows pas chargé sous linux!!!!
ba moi je te souhaite beaucoup de courage ....la j en ai strictement aucune idée....
ba moi je te souhaite beaucoup de courage ....la j en ai strictement aucune idée....