WIN32_PRINTER - ESTRANHO
Pessoal seguinte
Tenho uma função para listar impressoras em um computador remoto através de WMI, o estranho é que no meu computador funciona perfeitamente ele retorna todas as impressoras agora remotamente ele não traz nada, não consegui identificar o porque do erro.
OBS: Antes de mais nada tenho acesso nos outros computadores como administrador
Private Function ListCurrentPrinters(ByVal strComputerName As String, ByVal strAdminUsername As String, ByVal strAdminPassword As String)
Try
Dim co As New ConnectionOptions
co.Impersonation = ImpersonationLevel.Impersonate
co.Authentication = AuthenticationLevel.PacketPrivacy
co.EnablePrivileges = True
co.Username = strAdminUsername
co.Password = strAdminPassword
[ô]LOCAL COMPUTER
Dim scope = New ManagementScope
If UCase(strComputerName) = UCase(My.Computer.Name) Then
scope = New ManagementScope([Ô]\\[Ô] & strComputerName & [Ô]oot\cimv2[Ô])
Else
scope = New ManagementScope([Ô]\\[Ô] & strComputerName & [Ô]oot\cimv2[Ô], co)
End If
scope.Connect()
Dim printers = New ManagementObjectSearcher(scope, New SelectQuery([Ô]select * from Win32_Printer[Ô])).[Get]()
For Each printer As ManagementObject In printers
Dim nameOfPrinter = UCase(printer([Ô]Name[Ô]).ToString())
If Microsoft.VisualBasic.InStr(printer([Ô]name[Ô]), [Ô]\\[Ô]) Then
dgPrinters.Rows.Add(UCase(printer([Ô]name[Ô])), UCase(printer([Ô]Comment[Ô])), UCase(printer([Ô]location[Ô])))
End If
Next
Catch ex As Exception
End Try
End Function
Tenho uma função para listar impressoras em um computador remoto através de WMI, o estranho é que no meu computador funciona perfeitamente ele retorna todas as impressoras agora remotamente ele não traz nada, não consegui identificar o porque do erro.
OBS: Antes de mais nada tenho acesso nos outros computadores como administrador
Private Function ListCurrentPrinters(ByVal strComputerName As String, ByVal strAdminUsername As String, ByVal strAdminPassword As String)
Try
Dim co As New ConnectionOptions
co.Impersonation = ImpersonationLevel.Impersonate
co.Authentication = AuthenticationLevel.PacketPrivacy
co.EnablePrivileges = True
co.Username = strAdminUsername
co.Password = strAdminPassword
[ô]LOCAL COMPUTER
Dim scope = New ManagementScope
If UCase(strComputerName) = UCase(My.Computer.Name) Then
scope = New ManagementScope([Ô]\\[Ô] & strComputerName & [Ô]oot\cimv2[Ô])
Else
scope = New ManagementScope([Ô]\\[Ô] & strComputerName & [Ô]oot\cimv2[Ô], co)
End If
scope.Connect()
Dim printers = New ManagementObjectSearcher(scope, New SelectQuery([Ô]select * from Win32_Printer[Ô])).[Get]()
For Each printer As ManagementObject In printers
Dim nameOfPrinter = UCase(printer([Ô]Name[Ô]).ToString())
If Microsoft.VisualBasic.InStr(printer([Ô]name[Ô]), [Ô]\\[Ô]) Then
dgPrinters.Rows.Add(UCase(printer([Ô]name[Ô])), UCase(printer([Ô]Comment[Ô])), UCase(printer([Ô]location[Ô])))
End If
Next
Catch ex As Exception
End Try
End Function
Nesta função, você está impersonando o usuário admin da máquina remota. Verifique se está correto.
Não sei se a minha resposta é coerente com o que você quis dizer mas vamos lá.
Eu testei com todas as possibilidades do metodo [Ô]ImpersonationLevel.[Ô] e pelo que eu li somente o[Ô] ImpersonationLevel.Impersonate[Ô] funciona com WMI os demais quando eu testei o resultado foi 0 não trouxe nenhum resultado o [Ô]ImpersonationLevel.Impersonate[Ô] funcionou porém como te disse ele não lista as impressoras de rede somente as locais, porém localmente no meu PC funciona, bem estranho.
Eu testei com todas as possibilidades do metodo [Ô]ImpersonationLevel.[Ô] e pelo que eu li somente o[Ô] ImpersonationLevel.Impersonate[Ô] funciona com WMI os demais quando eu testei o resultado foi 0 não trouxe nenhum resultado o [Ô]ImpersonationLevel.Impersonate[Ô] funcionou porém como te disse ele não lista as impressoras de rede somente as locais, porém localmente no meu PC funciona, bem estranho.
Tópico encerrado , respostas não são mais permitidas