You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
6.0 KiB
Plaintext

Option Explicit
Dim wshshell,fso,i,Fnct
Dim strPath,strSystemFolder,strWinFolder,strTempFolder
'----------------------------- Objekte erzeugen --------------------------------
i = 0
On Error Resume Next
Do
err.Clear
i = i+1
Set wshshell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set Fnct = CreateObject("Install.Functions")
WScript.Sleep 1000
Loop Until Err.Number = 0 OR i > 30
If Err.Number <> 0 Then
WScript.Quit
End If
On Error Goto 0
'--------------------------- Standardpfade -------------------------------------
strPath = GetCurrentPath()
strSystemFolder = fso.GetSpecialFolder(1) & "\"
strWinFolder = fso.GetSpecialFolder(0) & "\"
strTempFolder = fso.GetSpecialFolder(2) & "\"
'------------------------------ Main -------------------------------------------
WriteToLog("Start")
Dim strDcsFolder, strComputerXml
strDcsFolder = ExpandPath("%FOCKEDCSDIR%","C:\FockeDcs") & "\"
strComputerXml = "c:\Computer.xml"
Dim Xml
Dim bComputerXmlFound
bComputerXmlFound = fso.FileExists(strComputerXml)
Dim strFockeTools
strFockeTools = ExpandPath("%FOCKETOOLSDIR%","C:\FockeTools") & "\"
Call wshshell.Run("regedit /s " & GetCurrentPath() & "fdcs_changes.reg",1,True)
Dim strDcsDir
strDcsDir = ExpandPath("%FOCKEDCSDIR%","C:\FockeDcs")
If fso.FileExists(strSystemFolder & "xcacls.exe") Then
WriteToLog("xcacls " & strDcsDir & " /T /E /G Operator:F;F /Y")
Call wshshell.Run("xcacls " & strDcsDir & " /T /E /G Operator:F;F /Y",0,True)
End If
If fso.FileExists(strFockeTools & "\fwprgadd.bat") Then
Call wshshell.Run(strFockeTools & "\fwprgadd.bat " + """c:\Visiwin\VisiwinStudio\System\VweManager.exe"" VweManager",0,True)
Call wshshell.Run(strFockeTools & "\fwportadd.bat " + "TCP 135 RPC_TCP all",0,True)
'RPC-Einstellungen korrigieren
Dim strInternetKey
strInternetKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\"
Dim strValue(5)
strValue(0) = "HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\PortsInternetAvailable"
strValue(1) = "HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\Ports"
strValue(2) = "HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\UseInternetPorts"
strValue(3) = "HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\"
For i=0 To 3
On Error Resume Next
wshshell.RegDelete(strValue(i))
Err.Clear
On Error Goto 0
Next
'XML-Datei korrigieren
If(bComputerXmlFound) Then
Call RemoveUnnecessaryNodes()
Call ChangeDcsShares()
End If
End If
WriteToLog("End")
'------------------------------- Funktionen ------------------------------------
Function GetCurrentPath()
Dim l_strScriptName
Dim l_strTemp
l_strScriptName = WScript.ScriptFullName
l_strTemp = WScript.ScriptName
GetCurrentPath = Left(l_strScriptName, Len(l_strScriptName) - Len(l_strTemp))
End Function
Function ExpandPath(p_strEnvironment,p_strDefault)
Dim l_strTemp
l_strTemp = wshshell.ExpandEnvironmentStrings(p_strEnvironment)
If l_strTemp = p_strEnvironment Then
l_strTemp = p_strDefault
End If
ExpandPath = l_strTemp
End Function
Function KeyExists(p_strKey)
Dim l_strTemp
On Error Resume Next
Err.Clear
l_strTemp = wshshell.RegRead(p_strKey)
If Err.Number <> 0 Then
KeyExists = False
Else
KeyExists = True
End If
On Error Goto 0
End Function
'----------------------------------- Sub --------------------------------------
Sub WriteToLog(p_strMessage)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim strLineToWrite
strLineToWrite = WScript.ScriptName & " -- " & p_strMessage
Dim strLogFile
strLogFile = ExpandPath("%SERVICEPACK_LOG%","c:\fockeservicepack.log")
' msgbox sLine & LogFile
Dim FileObject
if fso.FileExists(strLogFile) then
set FileObject = fso.OpenTextFile( strLogFile,ForAppending,false,0)
else
set FileObject = fso.OpenTextFile( strLogFile,ForWriting, true,0)
end if
FileObject.WriteLine(strLineToWrite)
FileObject.Close
set FileObject=nothing
End Sub
Sub OpenXml
Set Xml = CreateObject("Msxml.DOMDocument")
Dim strComputerXmlDoc
Dim ComputerXmlFile
Set ComputerXmlFile = fso.OpenTextFile(strComputerXml)
strComputerXmlDoc = ComputerXmlFile.ReadAll()
ComputerXmlFile.Close
Call Xml.LoadXml(strComputerXmlDoc)
End Sub
Sub RemoveUnnecessaryNodes
'Dokument lesen
Call OpenXml()
'Knoten l<>schen
Dim bChanged
bChanged = false
Dim strNodes(3)
strNodes(0) = "SysMgmt/RegistrySettings/DCOM_Availability"
strNodes(1) = "SysMgmt/RegistrySettings/DCOM_Ports"
strNodes(2) = "SysMgmt/RegistrySettings/DCOM_UsePorts"
For i = 0 To 2
Dim Nodes
Set Nodes = Xml.SelectNodes(strNodes(i))
If(Nodes.Length > 0) Then
Nodes.RemoveAll()
bChanged = true
End If
Set Nodes = Nothing
Next
'Ergebnis speichern
If bChanged Then
Xml.Save(strComputerXml)
End If
Set Xml = Nothing
End Sub
Sub ChangeDcsShares
'Dokument lesen
Call OpenXml()
'Problemknoten
Dim strDcsNode
strDcsNode = "SysMgmt/Shares/DCS"
Dim DcsNodes
Set DcsNodes = Xml.SelectNodes(strDcsNode)
If DcsNodes.Length = 1 Then
DcsNodes.RemoveAll()
Dim NewXml
Set NewXml = CreateObject("Msxml.DOMDocument")
Dim NewNode,DCSNode,strNewNode
strNewNode = _
"<FockeDCS>" & vbCrLf & _
"<Path>%FockeDCSDIR%</Path>" & vbCrLf & _
"<Access>(A;OICI;GA;;;$PLC$)(A;OICI;GA;;;$Administrators$)(A;OICI;GA;;;$DCS$)</Access>" & vbCrLf & _
"<MaxUses>-1</MaxUses>" & vbCrLf & _
"<Remark>dcs folder</Remark>" & vbCrLf & _
"</FockeDCS>"
NewXml.LoadXml(strNewNode)
Set NewNode = NewXml.SelectSingleNode("FockeDCS")
Set DcsNode = Xml.SelectSingleNode("SysMgmt/Shares")
DcsNode.AppendChild(NewNode)
'Ergebnis speichern
Xml.Save(strComputerXml)
If fso.FileExists(strSystemFolder & "Netshare.exe") Then
Call wshshell.Run("Netshare " & strDcsDir & " FockeDcs PLC,Administrators,uDCS A,A,R",0,True)
End If
End If
Set Xml = Nothing
End Sub