Bonjour,

Je souhaite faire du remote WMI à partir de mon programme. Ce programme est un Service (d'ou l'appelle a LogonUser).
Mon probleme est que je n'arrive pas à me connecter (ConnectServer) à une machine avec Window 2003.
Message d'erreur : "Accès refusé" et j'ai beaucoup de mal à comprendre pourquoi.
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
 
begin
   if not LogonUser (User, '', Pass, LOGON32_LOGON_BATCH, LOGON32_PROVIDER_DEFAULT, Logon) then
   WriteLn(F,SysErrorMessage(GetLastError));
 
   // Use the User now logged
   ImpersonateLoggedOnUser(Logon);
 
   CoInitialize(nil);
   WMILocator:= TSWbemLocator.Create(nil);
   try
      WriteLn(F,'ConnectServer');
      WmiService:= WMILocator.ConnectServer(Serv, 'ROOT\CIMV2', '', '', '',
                                      '', wbemConnectFlagUseMaxWait, nil);
      WriteLn(F,'Connected');
   except
      on E:Exception do begin
         WriteLn(F,E.Message);
         end;
      end;
   WMILocator.Free;
   RevertToSelf;
   CloseHandle(Logon);
end;
Voilà cela marche pour acceder à un Windows 2000 mais pas un 2003
Ceci dit en utilisant le même code dans une programme en ligne de commande (pas un Service avec LOCALSYSTEM) çà marche très bien
D'ailleurs en paramétrant mon Service pour qu'il se lance avec un compte utilisateur spécifié çà marche partout ...

Merci