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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Регистрация и разрегистрация DLL одним bat

Ответить
Настройки темы
CMD/BAT - Регистрация и разрегистрация DLL одним bat

Аватара для Sisin

Старожил


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

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


Уважаемые, как прописать в одном bat регистрацию и разрегистрацию DLL??
т.е. при запуске проверяется зарегистрирована ли DLL, если да - разрегистрировать, если нет - зарегистрировать.

Отправлено: 10:15, 21-06-2017

 

Ветеран


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

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


Покажите результат исполнения под:
Цитата y--:
ось - Win2012 R2 »
Код: Выделить весь код
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 под указанной ОС отличается поведением кодов возврата при дерегистрации библиотеки.

Отправлено: 15:51, 21-06-2017 | #21



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

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

y-- y-- вне форума

Старожил


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

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


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

-------
Ты это - заходи если что...


Отправлено: 16:03, 21-06-2017 | #22


Ветеран


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

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


Цитата y--:
в исходном не хватает ECHO »
Позор на мою седую голову . Приношу Вам свои извинения.

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

Отправлено: 16:13, 21-06-2017 | #23

y-- y-- вне форума

Старожил


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

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


Iska
На Win7 поведение другое - Unreg всегда выдает успех...
А так 2012 - тот же 8.1 по ядру - значит 8.0 проверять надо...

-------
Ты это - заходи если что...


Отправлено: 16:17, 21-06-2017 | #24


Ветеран


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

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


Цитата y--:
А так 2012 - тот же 8.1 по ядру »
2012 R2 — 8.1. Просто 2012 — да, 8.0:
Цитата y--:
значит 8.0 проверять надо... »

Отправлено: 16:30, 21-06-2017 | #25


Аватара для BKPB

Старожил


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

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


Идеальный вариант для контекстного меню был бы на подобие этого скрипта
т.к в контекстном меню будет одна строка и значение её будет меняться в зависимости от результата.
Только здесь пункт в меню прописан для рабочего стола и папок, а сделать как в предложенном .bat
только для .dll
Скрытый текст
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)

Отправлено: 17:24, 25-06-2017 | #26



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Регистрация и разрегистрация DLL одним bat

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Пропадает регистрация DLL Maza11 Microsoft Windows 2000/XP 4 18-02-2014 19:18
Разное - регистрация dll tj-9 Программирование и базы данных 3 02-04-2013 17:43
Регистрация *.dll SiNiK Хочу все знать 3 29-06-2012 14:28
CMD/BAT - [решено] регистрация группы DLL astrolit Скриптовые языки администрирования Windows 1 13-12-2011 11:19
Разное - [решено] регистрация DLL ya.dever Microsoft Windows 7 3 02-07-2011 05:46




 
Переход