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
J'ai trouvé du code VBScript mais je n'arrive pas à l'adapter :
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;
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
Partager