Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

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

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Собственно на работе потребовалась необходимость в локальной сети на более чем 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

Отправлено: 19:11, 13-03-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Два объекта FSO:
Код: Выделить весь код
Dim fso1: Set fso1 = CreateObject("Scripting.FileSystemObject")
Dim fso2: Set fso2 = CreateObject("Scripting.FileSystemObject")
излишне.

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

Отправлено: 20:35, 13-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Цитата Iska:
что мешало просто развернуть через групповую политику Platform SDK Redistributable: CAPICOM? »
А вот даже не знаю что на это ответить))) Мы не ищем легких путей))
Ну а если серьезно, я про него совсем забыл...

Отправлено: 00:07, 14-03-2011 | #3


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Подскажите, как проверить, зарегистрировалась ли библиотека х32 *.dll в windows 7x64 или нет?
После запуска команды выходит сообщение, что регистрация dll успешная, однако ни в regdllview ни в regdllview-x64 библиотеку не вижу.
Код: Выделить весь код
%windir%\SysWOW64\regsvr32.exe "путь\name.dll"
п.с. не в той теме запостил.

Последний раз редактировалось sov44, 22-10-2014 в 12:11.


Отправлено: 11:59, 22-10-2014 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата sov44:
Подскажите, как проверить, зарегистрировалась ли библиотека х32 *.dll в windows 7x64 или нет? »
Попробовать создать объект из-под клиента Automation той же разрядности, что и библиотека, обрабатывая возможную ошибку создания.

Отправлено: 12:40, 22-10-2014 | #5


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Iska:
Попробовать создать объект из-под клиента Automation той же разрядности, что и библиотека »
Немного не понятно.
Вроде сделал и запостил результат http://forum.oszone.net/post-2418807-69.html

Отправлено: 13:21, 22-10-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата sov44:
Немного не понятно. »
На примере последнего кода из 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 
'=============================================================================
Можете сравнить с исходным, чтобы увидеть отличия.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:44, 22-10-2014 | #7


Новый участник


Сообщения: 16
Благодарности: 4

Профиль | Отправить PM | Цитировать


Здравствуйте, уважаемые участники форума ( 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...

Отправлено: 09:17, 04-04-2018 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Копирование capicom.dll и ее регистрация

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Регистрация *.dll SiNiK Хочу все знать 3 29-06-2012 14:28
CMD/BAT - Копирование, регистрация и удаление библиотек Toltec Скриптовые языки администрирования Windows 8 07-12-2009 11:54
2008 - регистрация 32 bit Dll в 64x сервере yurii123 Windows Server 2008/2008 R2 0 14-05-2009 16:21
Установка - [решено] регистрация dll в висте Leon13 Microsoft Windows Vista 12 06-11-2008 09:35
Регистрация dll-ок в домене Serhii Microsoft Windows NT/2000/2003 8 16-07-2008 18:51




 
Переход