VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Ответить
Аватара пользователя
xsxPeguckAxsx

VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение xsxPeguckAxsx »

Доброго всем времени суток!



Собственно на работе потребовалась необходимость в локальной сети на более чем 230 машин разослать и зарегистрировать capicom.dll.

Для осуществления поставленной задачи был написан скрипт.

Может кому понадобиться, пользуйтесь)))




читать дальше »




Код:

Код: Выделить всё

'~~~~~~~~~~~~~~~~~~~~Объявление переменных~~~~~~~~~~~~~~~~
' *** переменные ***
Dim boolRegistr: boolRegistr = True 									' - для проверки регистрации dll
Dim cmdCode: cmdCode = "regsvr32 /s " 								' - это команда в командной строке regsvr32 /s
Dim strSrvPatch: strSrvPatch = "путь до файла на сервере\capicom.dll"      	' - сетевой путь до capicom.dll
Dim strLocalPatch                                                      	                                ' - локальный путь до capicom.dll 
Dim sysDir													' - определение папки WINDOWS
' *** объекты ***
Set sysShell = WScript.CreateObject("WScript.Shell")					        ' - объект нахождения папки WINDOWS
Set shellCmd = CreateObject("WScript.Shell")							' - объект выполнения команды в командной строке
'~~~~~~~~~~~~~~~~~~~~Выполнение тела скрипта~~~~~~~~~~~~~~~~
' *** определение папки WINDOWS ***
sysDir = sysShell.ExpandEnvironmentStrings("%windir%")
wscript.echo "Системная папка - " & sysDir
' *** указание полного локального пути ***
strLocalPatch = sysDir & "\system32\capicom.dll"
' *** копирование файла с сервера на ПК ***
copyFile strSrvPatch, strLocalPatch
' *** зарегистрирован ли dll в системе? ***
If RegistryExists("HKCR", "CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}","InprocServer32") = True Then
    boolRegistr = True
    wscript.echo "Dll зарегистрирована, работа скрипта будет завершена"
	wscript.quit
Else
     boolRegistr = False
     wscript.echo "Dll не зарегистрирована, будет произведена его регистрация в системе"
End If
' *** если dll не зарегистрирована, выполнить команду в консоли ***
If boolRegistr = False Then
    intDebug = shellCmd.Run(cmdCode & strLocalPatch, 1, True)
    If intDebug = 0 Then
        wscript.echo "Регистрация " & strLocalPatch & " успешно завершена"
    Else
        wscript.echo strLocalPatch & " не зарегистрирован"
    End If
End If
' *** обнуление всех переменных ***
Set sysShell = Nothing
Set shellCmd = Nothing
'~~~~~~~~~~~~~~~~~~~~Описание функций~~~~~~~~~~~~~~~~
' *** функция проверки регистрации dll ***
Function RegistryExists(LNGHKEY, strKey, strSubkey)
Dim reg, aSubkeys, s, hkroot
Const HKLM = &H80000002
Const HKCR = &H80000000
Const HKCU = &H80000001
Const HKUSERS = &H80000003
RegistryExists = False
If LNGHKEY = "HKLM" Then hkroot = HKLM
If LNGHKEY = "HKCU" Then hkroot = HKCU
If LNGHKEY = "HKCR" Then hkroot = HKCR
If LNGHKEY = "HKUSERS" Then hkroot = HKUSERS
Set reg = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
     reg.EnumKey hkroot, strKey, aSubkeys
     	If Not IsNull(aSubkeys) Then
        	For Each s In aSubkeys
            	If LCase(s) = LCase(strSubkey) Then
                	RegistryExists = True
                	Exit Function
             	End If
         	Next
     	End If
Set reg = Nothing
End Function
' *** функция копирования с сервера dll на ПК ***
Function copyFile(fileNameFrom, fileNameTo)
Dim fso1: Set fso1 = CreateObject("Scripting.FileSystemObject")
Dim fso2: Set fso2 = CreateObject("Scripting.FileSystemObject")
Dim file1
Dim file2
If fso1.fileexists(fileNameFrom) Then
	Set file1 = fso1.getfile(fileNameFrom)
    	If Not fso2.fileexists(fileNameTo) Then
        	wscript.echo fileNameTo & " не существует, копирование разрешено"
            	file1.copy (fileNameTo)
                copyFile = True
            	wscript.echo "копирование успешно завершено"
	    	Else
				wscript.echo filenameto & "уже есть в системе, копирование отменено"
				copyFile = False
        End If
Else
	wscript.echo "на сервере файла " & fileNameFrom & " не существует, завершение работы"
	copyFile = False
	wscript.quit
End If
Set fso1 = Nothing
Set fso2 = Nothing
End Function
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение Iska »

xsxPeguckAxsx, что мешало просто развернуть через групповую политику
Platform SDK Redistributable: CAPICOM
?



Два объекта FSO:



Код:

Код: Выделить всё

Dim fso1: Set fso1 = CreateObject("Scripting.FileSystemObject")
Dim fso2: Set fso2 = CreateObject("Scripting.FileSystemObject")

излишне.



Проверять регистрацию лучше банальной попыткой создания требуемого объекта и обработкой ошибки, в случае неудачи.
Аватара пользователя
xsxPeguckAxsx

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение xsxPeguckAxsx »

Спасибо за советы.




Цитата Iska:



что мешало просто развернуть через групповую политику Platform SDK Redistributable: CAPICOM?
VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация




А вот даже не знаю что на это ответить))) Мы не ищем легких путей))

Ну а если серьезно, я про него совсем забыл...
Аватара пользователя
sov44

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение sov44 »

Подскажите, как проверить, зарегистрировалась ли библиотека х32 *.dll в windows 7x64 или нет?

После запуска команды выходит сообщение, что регистрация dll успешная, однако ни в regdllview ни в regdllview-x64 библиотеку не вижу.



Код:

Код: Выделить всё

%windir%\SysWOW64\regsvr32.exe "путь\name.dll"

п.с. не в той теме запостил. Изображение
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение Iska »

Цитата sov44:



Подскажите, как проверить, зарегистрировалась ли библиотека х32 *.dll в windows 7x64 или нет?
VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация




Попробовать создать объект из-под клиента Automation той же разрядности, что и библиотека, обрабатывая возможную ошибку создания.
Аватара пользователя
sov44

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение sov44 »

Цитата Iska:



Попробовать создать объект из-под клиента Automation той же разрядности, что и библиотека
VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация




Немного не понятно. Изображение

Вроде сделал и запостил результат
http://forum.oszone.net/post-2418807-69.html
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение Iska »

Цитата sov44:



Немного не понятно.
VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация




На примере последнего кода из
vbscript: вычисление хэша MD5 строки — Серый форум
:



Код:

Код: Выделить всё

Option Explicit
Const CAPICOM_HASH_ALGORITHM_MD5 =       3
Dim strText
Dim objHashedData
strText = "Мама мыла раму."
On Error Resume Next
Set objHashedData = WScript.CreateObject("CAPICOM.HashedData")
If Err.Number  0 Then
	Err.Clear
	On Error Goto 0
	WScript.Echo "Can't create object [CAPICOM.HashedData]."
	WScript.Quit 1
End If
On Error Goto 0
With objHashedData
    .Algorithm = CAPICOM_HASH_ALGORITHM_MD5
    .Hash UStr2BStr(strText)
    WScript.Echo "String:   [" & strText & "]"
    WScript.Echo "MD5 Hash: [" & .Value & "]"
End With
Set objHashedData = Nothing
WScript.Quit 0
'=============================================================================
'=============================================================================
' Based on «md5test.vbs.txt» (http://www.daleanderson.ca/code/wsh/md5test%2Evbs.txt)
'
' Unicode string to Byte string conversion
'=============================================================================
Function UStr2BStr(strText)
    Dim i
    Dim strResult
    strResult = ""
    For i = 1 To Len(strText)
        strResult = strResult & ChrB(Asc(Mid(strText, i, 1)))
    Next
    UStr2BStr = strResult
End Function 
'=============================================================================

Можете сравнить с исходным, чтобы увидеть отличия.
Аватара пользователя
brunomann

Re: VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Сообщение brunomann »

Здравствуйте, уважаемые участники форума (
http://forum.oszone.net/
) Очень прошу, если у кого есть - кто-нибудь, пожалуйста, выложите на Вашем сервере (или где-нибудь на свободном файлообменнике) следующие очень старые SDK от Microsoft (и дайте ссылки на них), в Итернете ИХ (#1, #2, #3, #4, #5, #6, #7, #8), и #9) НИГДЕ НЕВОЗМОЖНО НАЙТИ(!!!) (все ссылки или битые-мертвые или ложные

НУЖНЫ ИМЕННО ВСЕ ЭТИ SDK:



----------------------------------------

#1) Microsoft Win32 Software Development Kit 4.0 (v4.0)

----------------------------------------

#2) Microsoft Platform SDK April 1999 (1999-04) (Last Platform SDK to officially install on Windows 95)

----------------------------------------

#3) Microsoft Platform SDK September 1999 (1999-09) (Last Platform SDK to fully support Visual C++ 5.0 (Visual C++ 5.0 announced Feb. 11, 1997, was available on March 19, 1997))

----------------------------------------

#4) Microsoft Platform SDK February 2001 (2001-02)

(The Microsoft Platform SDK, February 2001 Edition, was the last to ship redistributable components as an integral part of the SDK.)

----------------------------------------

#5) Microsoft Platform SDK June 2001 (2001-06)

Last Platform SDK to officially develop for Windows 95. (Does not officially install on Windows 95)

----------------------------------------

#6) Microsoft Platform SDK August 2001 5.1.2601.0 (2001-08) Last Platform SDK to unofficially develop for Windows 95. (Does not officially install on Windows 95)

----------------------------------------

#7) Microsoft Platform SDK November 2001 5.2.3590.2 (2001-11)

----------------------------------------

#8) Microsoft Platform SDK May 2002 5.2.3639.1 (2002-05)

----------------------------------------

#9) Microsoft Platform SDK July 2002 5.2.3663.0 (2002-07)

----------------------------------------



жду с терпением и заранее БОЛЬШОЕ СПАСИБО!

С уважением Bruno Mann.

P.S.

все ссылки в Internet или битые-мертвые или ложныеИзображение

извините, если не в ту тему написал, подскажите если есть тема по очень старым SDK...
Ответить

Вернуться в «Скриптовые языки администрирования Windows»