Dim P, R, W, F, D, iD Set WshShell = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") ' Получаем папку DC и скрипта P = FSO.GetParentFolderName(Wscript.ScriptFullName) ' DC или DC плюс параметры If WScript.Arguments.Count > 0 Then D = """" & P & "\doublecmd.exe"" " & GetParams Else D = """" & P & "\doublecmd.exe""" End If ' Путь к утилите winapiexec If WshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "x86" And WshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITEW6432%") = "%PROCESSOR_ARCHITEW6432%" Then W = P & "\utils\winapiexec.exe" Else W = P & "\utils\winapiexec64.exe" End If ' Путь к шрифту F = P & "\fonts\UbuntuMono-R.ttf" ' Если скрипт запущен с параметром "--unload", то скрипт выгрузит указанный шрифт и завершится If WScript.Arguments.Count > 0 And WScript.Arguments.Item(0) = "--unload" Then WshShell.Run """" & W & """ gdi32.dll@RemoveFontResourceExW """ & F & """ 0 0", 0, True WScript.Quit End If ' Если шрифт не найден, то просто запускаем DC и всё If Not FSO.FileExists(F) Then WshShell.Run D, 1, False WScript.Quit End If ' Запуск Set iD = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'doublecmd.exe'") If iD.Count > 0 Then WshShell.Run D, 1, True Else R = WshShell.Run("""" & W & """ gdi32.dll@AddFontResourceExW """ & F & """ 0 0", 0, True) If R = 1 Then WshShell.Run D, 1, True Else WshShell.Run D, 1, False WScript.Quit End If End If Set iD = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'doublecmd.exe'") If iD.Count = 0 Then WshShell.Run """" & W & """ gdi32.dll@RemoveFontResourceExW """ & F & """ 0 0", 0, True End If Function GetParams() Dim A, T, O For Each A In WScript.Arguments If A <> "--unload" Then If InStr(A, "--config-dir=") Then If InStr(A, " ") Then T = Replace(A, "--config-dir=", "--config-dir=""", 1, 1) O = O & " " & T & """" Else O = O & " " & A End If ElseIf InStr(A, "--servername=") Then If InStr(A, " ") Then T = Replace(A, "--servername=", "--servername=""", 1, 1) O = O & " " & T & """" Else O = O & " " & A End If ElseIf InStr(A, " ") Then O = O & " """ & A & """" Else O = O & " " & A End If End If Next GetParams = O End Function |