Base de registre

Base de registre - VB/VBA/VBS - Programmation

Marsh Posté le 19-07-2004 à 13:56:04    

Salut je voulais savoir s'il y a une fonction en VBS qui permet de recuperer les sous cles dans la base de registre pour afficher les valeurs !
Merci

Reply

Marsh Posté le 19-07-2004 à 13:56:04   

Reply

Marsh Posté le 19-07-2004 à 14:06:58    

set c=CreateObject("WScript.Shell" )
c.RegRead("HKCU\Software\CompanyName\ProductName\Key\Subkey\valuestring" )

Reply

Marsh Posté le 19-07-2004 à 14:07:31    

Reply

Marsh Posté le 19-07-2004 à 15:18:57    

Non en fait c avoir toutes les valeurs d'une sous clef en un seul coup

Reply

Marsh Posté le 19-07-2004 à 15:45:38    

desolé la j'ai pas le temps de te le faire en vbs (WMI en fait)
voici un copier/coller issue du sdk wmi
 

Citation :


Platform SDK: Windows System Information  
Enumerating Registry Subkeys
 
The following example demonstrates the use of the RegQueryInfoKey, RegEnumKeyEx, and RegEnumValue functions. The hKey parameter passed to each function is a handle to an open key. This key must be opened before the function call and closed afterward.
 
 
// QueryKey - Enumerates the subkeys of key, and the associated  
//    values, then copies the information about the keys and values  
//    into a pair of edit controls and list boxes.  
// hDlg - Dialog box that contains the edit controls and list boxes.
// hKey - Key whose subkeys and values are to be enumerated.
 
void QueryKey(HWND hDlg, HANDLE hKey)  
{  
    CHAR     achKey[MAX_PATH];  
    CHAR     achClass[MAX_PATH] = "";  // buffer for class name  
    DWORD    cchClassName = MAX_PATH;  // size of class string  
    DWORD    cSubKeys;                 // number of subkeys  
    DWORD    cbMaxSubKey;              // longest subkey size  
    DWORD    cchMaxClass;              // longest class string  
    DWORD    cValues;              // number of values for key  
    DWORD    cchMaxValue;          // longest value name  
    DWORD    cbMaxValueData;       // longest value data  
    DWORD    cbSecurityDescriptor; // size of security descriptor  
    FILETIME ftLastWriteTime;      // last write time  
 
    DWORD i, j;  
    DWORD retCode, retValue;  
 
    CHAR  achValue[MAX_VALUE_NAME];  
    DWORD cchValue = MAX_VALUE_NAME;  
    CHAR  achBuff[80];  
 
    // Get the class name and the value count.  
    RegQueryInfoKey(hKey,        // key handle  
        achClass,                // buffer for class name  
        &cchClassName,           // size of class string  
        NULL,                    // reserved  
        &cSubKeys,               // number of subkeys  
        &cbMaxSubKey,            // longest subkey size  
        &cchMaxClass,            // longest class string  
        &cValues,                // number of values for this key  
        &cchMaxValue,            // longest value name  
        &cbMaxValueData,         // longest value data  
        &cbSecurityDescriptor,   // security descriptor  
        &ftLastWriteTime);       // last write time  
 
    SetDlgItemText(hDlg, IDE_CLASS, achClass);  
    SetDlgItemInt(hDlg, IDE_CVALUES, cValues, FALSE);  
 
    SendMessage(GetDlgItem(hDlg, IDL_LISTBOX),  
        LB_ADDSTRING, 0, (LONG) ".." );  
 
    // Enumerate the child keys, until RegEnumKeyEx fails. Then  
    // get the name of each child key and copy it into the list box.  
 
    SetCursor(LoadCursor(NULL, IDC_WAIT));  
    for (i = 0, retCode = ERROR_SUCCESS;  
            retCode == ERROR_SUCCESS; i++)  
    {  
        retCode = RegEnumKeyEx(hKey,  
                     i,  
                     achKey,  
                     MAX_PATH,  
                     NULL,  
                     NULL,  
                     NULL,  
                     &ftLastWriteTime);  
        if (retCode == (DWORD)ERROR_SUCCESS)  
        {
            SendMessage(GetDlgItem(hDlg, IDL_LISTBOX),  
                LB_ADDSTRING, 0, (LONG) achKey);  
        }
    }  
    SetCursor(LoadCursor (NULL, IDC_ARROW));  
 
    // Enumerate the key values.  
    SetCursor(LoadCursor(NULL, IDC_WAIT));  
 
    if (cValues)  
    {
        for (j = 0, retValue = ERROR_SUCCESS;  
                j < cValues; j++)  
        {  
            cchValue = MAX_VALUE_NAME;  
            achValue[0] = '\0';  
            retValue = RegEnumValue(hKey, j, achValue,  
                &cchValue,  
                NULL,  
                NULL,    // &dwType,  
                NULL,    // &bData,  
                NULL);   // &bcData  
 
            if (retValue == (DWORD) ERROR_SUCCESS )  
            {  
                achBuff[0] = '\0';  
 
                // Add each value to a list box.  
                if (!lstrlen(achValue))  
                    lstrcpy(achValue, "<NO NAME>" );  
                wsprintf(achBuff, "%d) %s ", j, achValue);  
                SendMessage(GetDlgItem(hDlg,IDL_LISTBOX2),  
                    LB_ADDSTRING, 0, (LONG) achBuff);  
            }  
        }
 
    SetCursor(LoadCursor(NULL, IDC_ARROW));  
}


 
ps: je suis sur qu'il a moyen de faire BEAUCOUP plus cours en vbs/wmi


---------------
La réalité n'est qu'une illusion créée par le manque de Drogue....
Reply

Marsh Posté le 19-07-2004 à 15:51:19    

Ok meric et sinon pour avoir la liste des sous cles y a une fonction

Reply

Marsh Posté le 19-07-2004 à 15:53:26    

tiens, j'avais raison
voila la version en vbs beaucoup plus simple (utilise le wmi aussi)
j'ai essayer de la simplifier au max  
 

Citation :


const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_  
strComputer & "\root\default:StdRegProv" )
 
strKeyPath = "SYSTEM\CurrentControlSet\Services"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
 
For Each subkey In arrSubKeys
    msgbox subkey
Next


Message édité par Zobman le 19-07-2004 à 15:55:37

---------------
La réalité n'est qu'une illusion créée par le manque de Drogue....
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed