Ich habe ein Tool (mit Visual Studio 2015 Express - Visual Basic) erstellt, das die Mcafee-Datenversion und das Datum aus der Registrierung auf Computern überprüft Eingabe entweder manuell, in einer Textdatei oder ausgewählt aus dem Active Directory. Das Tool funktioniert erfolgreich alle Informationen für 714 von 970 Computern/Laptops zurückgegeben. Die meisten Fehler waren entweder, weil sie nicht in DNS aufgelöst werden konnten oder nicht pingbar waren, und die Tools identifizieren diese und protokollieren sie erfolgreich. Es dauerte etwas über 15 Minuten, bis das Tool die Informationen abgerufen und in einer Tabelle gespeichert hatte. Das Problem ist, dass auf 19 der Ausfälle habe ich eine der beiden folgenden Fehler und jene 19 nahm die Mehrheit der 15 Minuten für das Werkzeug erhalten und melden Sie sich alle Informationen:Timer zum Überspringen zum Verbinden mit dem nächsten Computer für jede Schleife bei Remoteverbindung mit RegistryKey.OpenRemoteBaseKey
Versuchte einen nicht autorisierten Vorgang auszuführen
der Netzwerkpfad wurde nicht
gibt es eine Möglichkeit der Verwendung eines Timers, so dass das Programm versucht, auf die Registrierung an dieser Stelle zu verbinden ... rk1 = RegistryKey.OpenRemoteBaseKey (RegistryHive.LocalMachine gefunden, strComputer, RegistryView.Registry64) und dann nach einer bestimmten Zeit stoppen und zum nex verschieben t Computer in der für jede Schleife? Ich habe nur für etwas mehr als ein Jahr programmiert und ich habe ausschließlich durch Versuch/Irrtum und Google gelernt, also bitte haben Sie Geduld mit mir, da ich kein erfahrener Programmierer bin. Hier ist der Code:
Das Programm funktioniert gut, mein Ziel ist es zu verbessern, indem es an den nächsten Computer überspringen, wenn es über einen längeren Zeitraum hängt. Ich habe die Computer herausgefiltert, die in DNS nicht aufgelöst werden können oder nicht pingable sind.
For Each sel In picker.SelectedObjects
Try
If HostIsResolvable(sel.Name) Then
Try
reply = ping.Send(sel.Name, 1)
If reply.Status = IPStatus.Success Then
IPAddr = reply.Address.ToString()
Try
comsys(sel.Name)
Dim rk1 As RegistryKey
Dim rk2 As RegistryKey
rk1 = RegistryKey.OpenRemoteBaseKey
(RegistryHive.LocalMachine, sel.Name,
RegistryView.Registry64)
rk2 = rk1.OpenSubKey
("SOFTWARE\Wow6432Node\McAfee\AVEngine")
mAV = rk2.GetValue("AVDatVersion").ToString
mAD = rk2.GetValue("AVDatDate").ToString
objExcel.Cells(y, 1) = sel.Name
objExcel.Cells(y, 2) = IPAddr
objExcel.Cells(y, 3) = commodel
objExcel.Cells(y, 4) = comuser
objExcel.Cells(y, 5) = "DAT Version Number: " & mAV
objExcel.Cells(y, 6) = "DAT Date: " & mAD
y = y + 1
Catch ex As Exception
My.Computer.FileSystem.WriteAllText(Dell
& "\McAfeeDATeNumFailed.txt", sel.Name & "-Unable to
connect. Make sure this computer is on the network,
has remote administration enabled, and that both
computers are running the remote registry service.
Error message: " & ex.Message & vbCrLf, True)
End Try
Else
My.Computer.FileSystem.WriteAllText(Dell
& "\McAfeeDATeNumFailed.txt", sel.Name & " is not
pingable! " & vbCrLf, True)
End If
Catch ex As Exception
My.Computer.FileSystem.WriteAllText(Dell
& "\McAfeeDATeNumFailed.txt", sel.Name & "Ping error:
Unable to connect. Make sure this computer is on the
network, has remote administration enabled, and that
both computers are running the remote registry
service. Error message: " & ex.Message & vbCrLf, True)
End Try
Else
My.Computer.FileSystem.WriteAllText(Dell
& "\McAfeeDATeNumFailed.txt", sel.Name & " could not be
resolved in DNS! " & vbCrLf, True)
End If
Catch ex As Exception
My.Computer.FileSystem.WriteAllText(Dell
& "\McAfeeDATeNumFailed.txt", sel.Name & "DNS error: Unable to
connect. Make sure this computer is on the network, has remote
administration enabled, andd that both computers are running the
remote registry service. Error message: " & ex.Message &
vbCrLf, True)
End Try
sel = Nothing
Next
Danke für die Antwort. Sollte dies eine Funktion sein, damit der Registrierungswert zurückgegeben und die Tabelle aktualisiert werden kann? –
Hallo, ich denke der lange Teil von dir Code ist in der zweiten Versuchserklärung. Sie könnten dies in "endlessLoop" kopieren und den Kommentar "Ihr Code" ersetzen. Rufen Sie dann 'Main' anstelle der try-Anweisung auf. Der Fangteil von try könnte kopiert werden, um einen Teil von endlessLoop zu fangen. Sorry für schlechtes Format, aber Beantwortung per Smartphone. – pLurchi
Und bitte manipulieren Sie die Anweisung thrd.join. Dies ist die Wartezeit bis zum Abbruch der Anfrage in Millisekunden. – pLurchi