1

Тема: VBS : Регистрация библиотек

Общеизвестно, что библиотеку можно (нужно) регистрировать

RegSvr32 "Путь\К\Библиотеке.dll"

Так же известно, что вся эта процедура - ни что иное как прописывание значений в реестр. В частности, это можно узнать тут.

Ситуация.
Есть библиотека, пока не зарегистрированная.

Нужно.
Зарегистрировать её по всему домену (ну или на произвольном количестве рабочих станций, это не важно)

Решений я вижу 2
1) Раскидать библиотеку и каким-то образом, предположим через PsExec, запускать RegSvr32 "Путь\К\Библиотеке.dll" на каждом компьютере.
2) Раскидать библиотеку и прописать её в реестр.

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

Второй способ мне кажется более удобным и логичным для домена.
С учётом появления Group Policy Preferences (GPP), раскидать файл и прописать данные в реестр стало просто, и сделать это можно без участия пользователя, однако тут свои грабли. Собственно, по ним у меня и вопрос.

Вопрос
Есть ли какой-нибудь способ сформировать .reg для любой библиотеки?

Поясню.
Есть библиотека, скажем, SvcSvc.dll.
Нужно установить её на компьютер через реестр.
На своём компьютере я запускаю что-либо, которое формирует SvcSvc.reg.

Я пытался делать это путём сравнения реестра до и после регистрации. То ли терпения не хватило, то ли не учитывал чего-то, в общем не срослось...

Может быть, кто-нибудь заморачивался этой идеей?

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.

2

Re: VBS : Регистрация библиотек

Чем не подошёл logon-скрипт при загрузке машины?

3

Re: VBS : Регистрация библиотек

alexii пишет:

Чем не подошёл logon-скрипт при загрузке машины?

Не то, чтобы он не подходит...
Скажу честно, я даже не рассматривал этот способ, но после рассмотрения выявился недочёт (не минус, а скорее некрасивость)
Получается, что регистрация будет происходить каждый раз при загрузке машины.
Нет, можно, конечно, использовать семафорные файлы или ещё что...

В общем, задача из практического приобретает академический интерес.

Каким образом можно получить все нужные ключи реестра для последующей регистрации библиотеки?

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.

4

Re: VBS : Регистрация библиотек

Получается, что регистрация будет происходить каждый раз при загрузке машины.

Отчего так?

Option Explicit

Dim strDLLShare
Dim strDLLName

Dim objSvcsvc


strDLLShare = "\\Server\Share$"
strDLLName  = "SvcSvc.dll"

On Error Resume Next

Set objSvcsvc = WScript.CreateObject("Svcsvc.Service")

If Err.Number <> 0 Then
    On Error Goto 0
    
    With WScript.CreateObject("Scripting.FileSystemObject")
        If .FileExists(.BuildPath(strDLLShare, strDLLName)) Then
            .CopyFile .BuildPath(strDLLShare, strDLLName), .BuildPath(.GetSpecialFolder(1).Path, "\")
            WScript.CreateObject("WScript.Shell").Run "regsvr32.exe /s """ & .BuildPath(.GetSpecialFolder(1).Path, "\" & strDLLName) & """", 0, True
        End If
    End With
Else
    On Error Goto 0
End If

WScript.Quit 0

5

Re: VBS : Регистрация библиотек

alexii пишет:

Отчего так?

...
If .FileExists(.BuildPath(strDLLShare, strDLLName)) Then
...
MikeSh пишет:

Нет, можно, конечно, использовать семафорные файлы или ещё что...

Собственно, это я и имел ввиду, говоря о семафорных файлах. В своё время так и делал. Правда это было в логон-скрипте пользователя и библиотека была упакована в rar-sfx. Но это не важно, вопрос остаётся открытым.

Каким образом можно получить все нужные ключи реестра для последующей регистрации библиотеки?

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.

6

Re: VBS : Регистрация библиотек

Это не семафорный файл, а местоположение библиотеки на скрытом ресурсе на сервере. Проверка регистрации делается путём попытки создания объекта. Если при создании объекта произошла ошибка — копируем библиотеку на локальную машину и регистрируем.

Думаю, что на JScript, с его try…catch будет нагляднее.

7

Re: VBS : Регистрация библиотек

Прошу прощения, прочитал невнимательно.
Отнесём этот метод к " или ещё что..." )))

Как быть с академической задачей про реестр?

"Единство,- возвестил оракул наших дней: -
Быть может спаяно железом лишь и кровью"…
Но мы попробуем спаять его любовью,-
А там увидим, что прочней…    (Ф. Тютчев)       Тут хорошая справка по vbs.

8

Re: VBS : Регистрация библиотек

MikeSh пишет:

Как быть с академической задачей про реестр?

http://blog.not-a-kernel-guy.com/2007/04/13/172