Bonjour à tous.

Je cherche le moyen d'accéder à une base de registre distante via WMI.
Je pourrais utiliser TRegistry.RegistryConnect('\\'+ServerName) mais je n'ai pas trouver la façon de spécifier l'authentification ( username + password )



Exemple de mon code qui fonctionne utilisant WMI et WQL en local
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var  WMIObject:           SWbemObject;
     WMILocator:          TSWbemLocator;
     WMIObjectSet:        SWbemObjectSet;
     ObjectEnumerator:    IEnumVariant;
     ArrayVariant:        OleVariant;
     NumberItem:          LongWord;
 
     Data : String;
 
 
begin
  Services := WMILocator.ConnectServer( '.' , 'root\cimv2', '' , '' ,  '',   '', wbemConnectFlagUseMaxWait, nil);
 
  Data := '' ;
 
  WMIObjectSet := Services.ExecQuery( 'select * from ??', 'WQL',  wbemFlagReturnImmediately, nil);
 
  ObjectEnumerator:= (WMIObjectSet._NewEnum) as IEnumVariant;
 
  while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do begin
   WMIObject := IUnknown(ArrayVariant) as SWBemObject;
 
 
   Data  := Data + AdjustLineBreaks(WMIObject.GetObjectText_(0));
 
 end;
end;
J'ai trouvé du code VBScript mais je n'arrive pas à l'adapter :


Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
 
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
    StdOut.WriteLine subkey
Next


Merci d'avance,
Stephan