lister imprimantes sur un poste distant d'un utilisateur
Posté : mar. 06 juil. 2021 17:37
Bonjour,
J'essaye de lister les imprimantes d'un utilisateur à distant.
J'ai voulu partir de ce code
Cela fonctionne bien pour le poste local mais quand je veux avoir les informations sur un poste distant je n'ai que les imprimantes installé en local et nom ceux qui sont partagées sur le serveur.
j'ai voulu essayé en allant lire sur la base de registre.
J''ai remarqué plusieurs endroits ou je pourrai récupérer les informations.
Ordinateur\HKEY_CURRENT_USER\Printers\Connections
Ordinateur\HKEY_USERS\S-1-5-21-759405821-1666520105-3629554393-1981\Printers\ConvertUserDevModesCount
Ordinateur\HKEY_USERS\S-1-5-21-759405821-1666520105-3629554393-546158\Printers\ConvertUserDevModesCount
Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print
Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Print
le truc c'est que j'ai trouvé comment lister les clés pour un poste local avec RegEnumKey mais je n'ai pas trouvé pour un poste distant.
je sais qu'aver GetStringValue on peut récuperer l'info directement sur une variable mais moi je voudrais lister les clés pour ensuite récupérer les bonnes variables.
Avez-vous des informations à ce sujet.
Merci d'avance,
Damien.
J'essaye de lister les imprimantes d'un utilisateur à distant.
J'ai voulu partir de ce code
#include <Array.au3>
Local $PrinterList[1][4], $PrinterCount
Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")
if @error Then
msgbox(64,"Erreur ! (" & @error &")" ,"Veuillez utiliser un compte administrateur sur le domaine pour visulaiser la liste des imprimantes sur le serveur " & $computer ) ; récupération de l'erreur si non autorisé
Return
Else
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer")
If IsObj($colItems) Then
For $objItem In $colItems
ReDim $PrinterList[$PrinterCount + 1][4]
$sharename = $objItem.ShareName
$PrinterList[$PrinterCount][0] = $objItem.shareName
$PrinterList[$PrinterCount][1] = $objItem.DeviceID
$PrinterCount += 1
Next
_ArrayDisplay($PrinterList, "$aFileList")
EndIf
EndIf
Local $PrinterList[1][4], $PrinterCount
Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")
if @error Then
msgbox(64,"Erreur ! (" & @error &")" ,"Veuillez utiliser un compte administrateur sur le domaine pour visulaiser la liste des imprimantes sur le serveur " & $computer ) ; récupération de l'erreur si non autorisé
Return
Else
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer")
If IsObj($colItems) Then
For $objItem In $colItems
ReDim $PrinterList[$PrinterCount + 1][4]
$sharename = $objItem.ShareName
$PrinterList[$PrinterCount][0] = $objItem.shareName
$PrinterList[$PrinterCount][1] = $objItem.DeviceID
$PrinterCount += 1
Next
_ArrayDisplay($PrinterList, "$aFileList")
EndIf
EndIf
j'ai voulu essayé en allant lire sur la base de registre.
J''ai remarqué plusieurs endroits ou je pourrai récupérer les informations.
Ordinateur\HKEY_CURRENT_USER\Printers\Connections
Ordinateur\HKEY_USERS\S-1-5-21-759405821-1666520105-3629554393-1981\Printers\ConvertUserDevModesCount
Ordinateur\HKEY_USERS\S-1-5-21-759405821-1666520105-3629554393-546158\Printers\ConvertUserDevModesCount
Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print
Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Print
le truc c'est que j'ai trouvé comment lister les clés pour un poste local avec RegEnumKey mais je n'ai pas trouvé pour un poste distant.
je sais qu'aver GetStringValue on peut récuperer l'info directement sur une variable mais moi je voudrais lister les clés pour ensuite récupérer les bonnes variables.
Avez-vous des informations à ce sujet.
Merci d'avance,
Damien.