Получить информацию об операционной системе с сетевого хоста (ПК, подключенного к локальной сети) - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь получить информацию от хоста, подключенного к локальной сети.Следующий код дает название операционной системы, например Microsoft Windows 10 Pro на моем локальном компьютере.Когда я использую имя сетевого компьютера, появляется сообщение об ошибке Access Denied

enter image description here

Насколько я понимаю, он не получает разрешения на сбор информации с этого компьютера, посколькуучетные данные не предоставлены.Итак, мой вопрос заключается в том, как предоставить учетные данные этим кодам, чтобы они могли получить разрешение на сбор.

Примечание. Я добавил исключение Windows Management Instrumentation (WMI) в брандмауэр Windows на удаленном ПК.

Sub GetOS()
    If getOperatingSystem <> "" Then
        MsgBox getOperatingSystem()
    End If
End Sub

'------------- Function to get Operating System Info --------------

Public Function getOperatingSystem()
    Dim localHost       As String
    Dim objWMIService   As Variant
    Dim colOperatingSystems As Variant
    Dim objOperatingSystem As Variant

    On Error GoTo Error_Handler

    'localHost = "." 'Technically could be run against remote computers, if allowed
    localHost = "SCANNER-PC"
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & localHost & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem In colOperatingSystems
        getOperatingSystem = objOperatingSystem.Caption '& " " & objOperatingSystem.Version
        Exit Function
    Next

Error_Handler_Exit:
    On Error Resume Next
    Exit Function

Error_Handler:
    MsgBox "Error No: " & Err.Number & vbCrLf & "Description: " & Err.Description
    Resume Error_Handler_Exit
End Function

1 Ответ

0 голосов
/ 05 октября 2018

Наконец, я могу передать учетные данные в запрос WMI.Следующая информация подзапроса на удаленном ПК с использованием учетных данных.

Public Sub WMIQueryCRED()
Dim objSWbemLocator As Object
Dim objWMIService As Object
Dim colItems As Object
Dim strHost, strUserID, strPassword As String

strHost = "NetworkHost"
strUserID = "Domain\domainadmin"
strPassword = "Password"

    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objSWbemLocator.ConnectServer(strHost, "root\cimv2", strUserID, strPassword)
    Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")

    For Each objItem In colItems
        MsgBox objItem.Caption, vbInformation, "Successfull"
    Next

End Sub
...