Problem
Man möchte mittels WMI auf einen PC zugreifen wir jedoch von der Firewall blockiert.
Die Firewall-Konfiguration stellt den WMI-Dienst nicht zur Verfügung um diesen freizugeben.
Lösung
Die einfachste Möglichkeit die Freigabe zu aktivieren stellt der netsh-Befehl zur Verfügung.
Einfach in der Shell des Remote-Computers folgenden Befehl ausführen:
Setup aus dem Netzwerk zu starten führt zu dem Fehler :
Das Installationsprogramm hat einen Fehler festgestellt: 0x8007003. Das System kann den angegeben Pfad nicht finden
Lösung :
Hier gibt es mehrere Lösungsansätze , einer davon wäre UAC komplett zu deaktivieren das bringt allerdings andere Risiken mit sich. Deswegen hab ich diesen Weg nicht gewählt. Ein Registry Key verändert dieses verhalten insoweit das alle Netzlaufwerke die verbunden wurden in den Benutzeraccount mit erhöhten Rechten durchgeschleift werden.
Problem
Windows 7/Vista-Clients haben das Problem, dass es gelegentlich zu Netzwerkabbrüchen bzw. Speicherproblemen im Netzwerk kommt.
Auf den Switchen wird ein CRC-Error oder Excessiv Broadcast gemeldet.
Lösung
Man kann versuchen, die TCP Auto-Tuning Einstellungen, die bei Windows 7 und Vista standardmäßig aktiv sind, zu deaktivieren.
Mit folgendem Befehl wird das Auto-Tuning deaktiviert:
netsh interface tcp set global autotuning=disabled
Mit folgendem Befehl wird das Auto-Tuning wieder mit dem Standardwert aktiviert:
netsh interface tcp set global autotuning=normal
Hinweis:
Man beachte, bei aktivierter UAC, dass man CMD als Administrator ausführt!!
Problem:
Man hat ein benutzerdefiniertes Outlook-Formular erstellt und darin Skripte bzw. Code hinterlegt.
Wenn man das Formular testweise ausführt, klappt alles ohne Probleme.
Wenn man das Formular veröffentlicht und dann versucht das Skript per Button o.ä. auszuführen, passiert nichts!
Das Problem tritt nur bei Clients mit OUTLOOK 2010 auf.
Lösung:
Seit Outlook 2010 wird per default das Ausführen von Code in öffentlichen Ordnern verhindert.
Dies kann umgangen werden, in dem man folgende Änderung in der Registry durchführt:
Der Name des Druckservers hat sich verändert und soll jetzt automatisch beim anmelden der user in den verbundenen Drucker korrigiert werden.
Getestet mit Win 2000 / XP / 7
Lösung :
Ich hab mich ran gesetzt und eine neue Version ohne speichern auf File System Ebene geschrieben.
Hier die möglichen Parameter :
-o:[Servername] or /o:[Servername] = old print server
-n:[Servername] or /n:[Servername] = new print server
-l:[Logfile] or /l:[Logfile] = create an Logfile (path:filename)
-? or /? = shows this help
replace [Servername] with the hostname / ip-adress without [ and ]
Der Name des Printservers hat sich geändert , jetzt kann man zu Fuß an alle Clients gehen und die Drucker umstellen oder man nimmt dieses Skript ins Loginskript auf und das erledigt einem diese Aufgabe ....
Skript :
Option Explicit
Dim ObjWsh : Set ObjWsh = CreateObject("WScript.Shell")
Dim ObjNet : Set ObjNet = CreateObject("WScript.Network")
Dim ObjFso : Set ObjFso = CreateObject("Scripting.FileSystemObject")
Dim objEnv : Set objEnv = ObjWsh.Environment("Process")
Dim Logfile : Logfile = objEnv("USERPROFILE") & "\PrtUmzug.txt"
Dim objNetPr,NPR,DUMMY,ToDo,Zeile,Inhalt,Entry,Printer_New,OLDSERVER,NEWSERVER
OLDSERVER = "SERVERALT" ' ----------------------------> Hier den Namen des alten Printservers eintragen
NEWSERVER = "SERVERNEU" ' ----------------------------> Hier den Namen des neuen Printservers eintragen
' ------------------ routine
WScript.Echo ""
WScript.Echo "-----------------------------------------------------"
If Not ObjFso.FileExists(Logfile) then
WScript.Echo "|-> Ihre Druckerverbindungen werden überprüft & korrigiert"
Inhalt = GetPrinterNames()
WriteLog Logfile,Inhalt
ReadLog Logfile
Else
WScript.Echo "|-> Druckerverbindungen wurden bereits überprüft"
End If
WScript.Echo "-----------------------------------------------------"
WScript.Quit (1)
' ------------------ funktionen
Function GetPrinterNames() '--- liest die verbundenen Netzwerkdrucker aus
Set objNetPr = ObjNet.EnumPrinterConnections
For NPR = 0 to objNetPr.Count - 1 Step 2
If Left(objNetPr.Item(NPR + 1),2) = "\\" then
If DUMMY = "" then
DUMMY = "NPR|" & objNetPr.Item(NPR) & "|" & objNetPr.Item(NPR + 1)
Else
DUMMY = DUMMY & vbCrLf & "NPR|" & objNetPr.Item(NPR) & "|" & objNetPr.Item(NPR + 1)
End If
End If
Next
GetPrinterNames = DUMMY
DUMMY = ""
Set objNetPr = nothing
End Function
Function SetPrinterNames(Line) '--- verbindet einen Netzwerkdrucker
On Error Resume Next
Entry = split(Line,"|")
If UBound(Entry) = 2 Then
Printer_New = Replace(lcase(Entry(2)),OLDSERVER,NEWSERVER)
ObjNet.RemovePrinterConnection Entry(2)
ObjNet.AddWindowsPrinterConnection Printer_New
End If
End Function
Function ReadLog(File) '--- überprüft ob Logfile existiert wenn ja liet Datei aus und spielt gesicherte Einträge zurück
If ObjFso.FileExists(File) Then
Set Dummy = ObjFso.OpenTextFile(File)
Do Until Dummy.AtEndOfStream
Zeile = trim(Dummy.Readline)
SetPrinterNames(Zeile)
Loop
End If
End Function
Function WriteLog(File,Content) '--- löscht die Datei wenn vorhanden und erstellt eine aktualisierte
If ObjFso.FileExists(File) Then
ObjFso.DeleteFile(File)
End If
Dim ObjLogFile : Set ObjLogFile = ObjFso.OpenTextFile(File,8,true)
ObjLogFile.WriteLine (Content)
Set ObjLogFile = Nothing
End Function
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”