begin process at 2012 05 30 05:21:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

ActiveX / COM

 > 

[VC++] Problème avec un activeX de lecture registre windows


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[VC++] Problème avec un activeX de lecture registre windows

mercredi 16 août 2006 à 14:42:15 | [VC++] Problème avec un activeX de lecture registre windows

Nyn

Bonjour!

     Je me permets de poster ici (j'espère que c'est la bonne section) car je rencontre des problèmes sur le projet que voici : Je dois réaliser un activeX en VC++ avec visual studio 2005 pour lire des données dans la base de registre windows, et présenter le résultat dans une page web avec javascript. Or, je rencontre deux problèmes principaux. Le premier est que l'activeX fait planter IE dans la méthode qui est censée lire un REG_SZ que voici

[CODE]
BSTR CNewTryCtrl::ReadSZValue(LPCTSTR hive, LPCTSTR key, LPCTSTR value)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CString strResult;
    HKEY hiveName, hKey;
    LPCTSTR HKCU, HKLM;
    DWORD size;
    DWORD type = REG_SZ;
    HKCU = CString("HKCU");
    HKLM = CString("HKLM");

    if (_tcsicmp(hive, HKCU) == 0) {
        hiveName = HKEY_CURRENT_USER;
    } else {
        hiveName = HKEY_LOCAL_MACHINE;
    }
    if( RegOpenKeyEx(hiveName, key, 0L, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
    {
        if (RegQueryValueEx(hKey, value, NULL, NULL, NULL, &size) == ERROR_SUCCESS) {
            LPTSTR szValue = new TCHAR[size/sizeof(TCHAR)];
            if (RegQueryValueEx(hKey, value, NULL, &type, (LPBYTE)szValue, &size) == ERROR_SUCCESS) {
                BSTR result = (BSTR)CComBSTR(szValue);
                delete(szValue);
                RegCloseKey(hKey);
                return result;
            } else {
                strResult = CString("Could not read key value");
                RegCloseKey(hKey);
            }
        } else {
            strResult = CString("Could not read key value");
            RegCloseKey(hKey);
        }
    } else {
        strResult = CString("Could not open key");
    }
    return strResult.AllocSysString();
}
[/CODE]

et que j'utilise comme ceci en javascript dans la page web

[CODE]
        function getIEVersion() {
         return(RegAX.ReadValue("HKLM", "SOFTWARE\\Microsoft\\Internet Explorer", "Version"));
        }
...
...
[/CODE]

A noter que j'ai fait une méthode readDWValue qui lit les REG_DWORD et que celle-ci marche très bien. Egalement, lorsque je fais l'appel à la méthode ReadSZValue, puis un appel à ReadDWValue, ça plante, alors que l'inverse ne plante pas. J'ai donc pensé à un problème d'allocation mémoire, ou un problème de string, avec lesquelles je suis peu familier dans ce langage, mais je n'ai pas été capable de repérer l'erreur.

Le second problème est que l'activeX se télécharge et se lance sur certaines machines distantes, mais pas toutes, alors qu'a priori je l'ai signé correctement avec les outils makecert et signcode.

Merci d'avance!

Nyn

PS: A titre informatif, et à des fins de comparaison, j'inclus ici la méthode ReadDWValue :

[CODE]
LONG CNewTryCtrl::ReadDWValue(LPCTSTR hive, LPCTSTR key, LPCTSTR value)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    HKEY hiveName, hKey;
    CString HKCU, HKLM;
    DWORD dwValue;
    DWORD size;
    DWORD type = REG_DWORD;
    HKCU = "HKCU";
    HKLM = "HKLM";

    if (_tcsicmp(hive, HKCU) == 0) {
        hiveName = HKEY_CURRENT_USER;
    } else {
        hiveName = HKEY_LOCAL_MACHINE;
    }
    if( RegOpenKeyEx(hiveName, key, 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
    {
        if (RegQueryValueEx(hKey, value, NULL, &type, (LPBYTE)&dwValue, &size) == ERROR_SUCCESS) {
            RegCloseKey(hKey);
            return dwValue;
        } else {
            RegCloseKey(hKey);
            return -1;
        }
    } else {
        return -1;
    }
}
[/CODE]


Cette discussion est classée dans : key, value, hkey, hkcu, hivename


Répondre à ce message

Sujets en rapport avec ce message

PB RegCreateKeyEx [ par moustachu ] Bonjour,Malgrè les nombreux messages sur le Forum que j'ai consulté, j'ai un problème lors de l'exécution de cette fonction :void WriteRegistry(HKEY m Problème fonction [ par Mini92 ] Plop all :)Voilà, j'ai fais cette fonction qui récupère la valeur d'une clé du registre :/*** Retourne la valeur d'une clé dans le registre* @Key  = K Registre [ par pagd ] Bonjour, quelqu'un peut il me dire pourquoi dans le code ci dessous,je récupère une erreur 2 à l'appel de RegQueryValue ?Remarque 1 : Je travail sous Problème avec le lParam de la fonction de hook clavier. [ par HeavenForsaker ] Bonjour, Voici la fonction prise sur MSDN : LRESULT CALLBACK KeyboardProc(    int code,    WPARAM wParam,    LPARAM lParam</ ecrire dans le registre windows 7 en c [ par kirbydu94 ] Bonjour, je souhaiterais développer un logiciel me permettant d'écrire dans le registre en c. Cependant j'aimerais écrire dans le répertoire précis Renseignements relatifs au RFC 2246 [ par alainkalo ] Salut, je m'appelle Alain Kalombo, je suis un développeur d'application, j'évolue avec le langage c, php. ça fait un bout de temps que j'essaie de dév Lire port PCI [ par scallacs ] Bonjour, J'ai un programme sous VS C++ 6 pour windows XP qui permet de lire un port parallèle branché à une pédale. Le problème est que le hardware cin besoin aide [ par Chubab ] voila je suis en train de créer un programme qui donne les probabilités au hold'em poker...kan jutilise cin pour une variable char il ne prend que le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales