CMD/BAT - Регистрация и разрегистрация DLL одним bat

Аватара пользователя
y--

Re: CMD/BAT - Регистрация и разрегистрация DLL одним bat

Сообщение y-- »

Покажите результат исполнения под:


Цитата y--:



ось - Win2012 R2
CMD/BAT - Регистрация и разрегистрация DLL одним bat






Код:

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

regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.9.2170\bin\comcntr.dll" /u /s && echo Errorlevel is 0 || Errorlevel NOT 0

для случаев ещё не зарегистрированной библиотекой и с уже зарегистрированной библиотекой. Похоже, что версия regsvr32.exe под указанной ОС отличается поведением кодов возврата при дерегистрации библиотеки.
Аватара пользователя
y--

Re: CMD/BAT - Регистрация и разрегистрация DLL одним bat

Сообщение y-- »

Iska

выполнял такой код:

Код:

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

regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.9.2170\bin\comcntr.dll" /u /s && echo Errorlevel is 0 ||echo Errorlevel NOT 0

в исходном не хватает ECHO



Для зарегистрированной библиотеки:

Код:

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

C:\Program Files (x86)\1cv8\8.3.9.2170\bin>regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.9.2170\bin\comcntr.dll" /u /s   && echo Errorlevel is 0   || echo Errorlevel NOT 0 
Errorlevel NOT 0

Для незарегистрированной библиотеки:

Код:

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

C:\Program Files (x86)\1cv8\8.3.9.2170\bin>regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.9.2170\bin\comcntr.dll" /u /s   && echo Errorlevel is 0   || echo Errorlevel NOT 0 
Errorlevel is 0
Аватара пользователя
Iska

Re: CMD/BAT - Регистрация и разрегистрация DLL одним bat

Сообщение Iska »

Цитата y--:



в исходном не хватает ECHO
CMD/BAT - Регистрация и разрегистрация DLL одним bat




Позор на мою седую голову Изображение. Приношу Вам свои извинения.




Цитата y--:



Для зарегистрированной библиотеки:
CMD/BAT - Регистрация и разрегистрация DLL одним bat




Вот так Изображение. Поведение regsvr32.exe в новой ОС изменилось. Ещё бы кто-нибудь под 8.0/2012 проверил, дабы понять, когда изменилось.
Аватара пользователя
y--

Re: CMD/BAT - Регистрация и разрегистрация DLL одним bat

Сообщение y-- »

Iska

На Win7 поведение другое - Unreg всегда выдает успех...

А так 2012 - тот же 8.1 по ядру - значит 8.0 проверять надо...
Аватара пользователя
Iska

Re: CMD/BAT - Регистрация и разрегистрация DLL одним bat

Сообщение Iska »

Цитата y--:



А так 2012 - тот же 8.1 по ядру
CMD/BAT - Регистрация и разрегистрация DLL одним bat




2012 R2 — 8.1. Просто 2012 — да, 8.0:


Цитата y--:



значит 8.0 проверять надо...
CMD/BAT - Регистрация и разрегистрация DLL одним bat
Аватара пользователя
BKPB

Re: CMD/BAT - Регистрация и разрегистрация DLL одним bat

Сообщение BKPB »

Идеальный вариант для контекстного меню был бы на подобие этого скрипта

т.к в контекстном меню будет одна строка и значение её будет меняться в зависимости от результата.

Только здесь пункт в меню прописан для рабочего стола и папок, а сделать как в предложенном .bat

только для .dll



Скрытый текст

[spoiler]Dim WSHShell

Set WSHShell = WScript.CreateObject("WScript.Shell")

' Если скрипт запущен с каким-то параметром, то...

If WScript.Arguments.Count>0 Then

' Проверяем значение в реестре и в зависимости от него либо отображаем скрытые папки, либо наоборот убираем.

If WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden") = 1 then

' Скрываем папки

WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "0", "REG_DWORD"

WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "2", "REG_DWORD"

' Добавляем пункт в контекстное меню

' В поле command прописываем путь до текущего скрипта с параметром (не важно каким, главное, чтобы он был), чтобы..

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

WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\", "Показать скрытые файлы", "REG_SZ"

WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ"

' Обновляем окно эксплорера, чтобы увидеть результат

WSHShell.SendKeys "{F5}"

Else

' Скрываем папки

WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "1", "REG_DWORD"

WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "1", "REG_DWORD"

' Добавляем пункт в контекстное меню

WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\", "Не показывать скрытые файлы", "REG_SZ"

WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\command\", "WScript.exe """&WScript.ScriptFullName&""" -argument", "REG_SZ"

' Обновляем окно эксплорера, чтобы увидеть результат

WSHShell.SendKeys "{F5}"

End If

Else

' Если запись в реестре есть, то удаляем наш раздел

If WSHShell.Run("cmd.exe /C REG QUERY ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden""", 0, True)=0 Then

WSHShell.Run "cmd /C REG DELETE ""HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden"" /f", 0

Else

' Иначе запускаем этот скрипт с параметром (какой параметр - значения не имеет, главное его наличие)

WSHShell.Run """"&WScript.ScriptFullName&""" -argument"

' И ещё добавим иконочку для красоты

WSHShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\SuperHidden\Icon", "%SystemRoot%\System32\shell32.dll,69", "REG_SZ"

End If

End if

Set WSHShell = Nothing

WScript.Quit(0)[/spoiler]
Ответить

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