Покажите результат исполнения под:
ось - 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 под указанной ОС отличается поведением кодов возврата при дерегистрации библиотеки.
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
в исходном не хватает ECHO »
Позор на мою седую голову :(. Приношу Вам свои извинения.
Для зарегистрированной библиотеки: »
Вот так :). Поведение regsvr32.exe в новой ОС изменилось. Ещё бы кто-нибудь под 8.0/2012 проверил, дабы понять, когда изменилось.
Iska
На Win7 поведение другое - Unreg всегда выдает успех...
А так 2012 - тот же 8.1 по ядру - значит 8.0 проверять надо...
А так 2012 - тот же 8.1 по ядру »
2012 R2 — 8.1. Просто 2012 — да, 8.0:
значит 8.0 проверять надо... »
Идеальный вариант для контекстного меню был бы на подобие этого скрипта
т.к в контекстном меню будет одна строка и значение её будет меняться в зависимости от результата.
Только здесь пункт в меню прописан для рабочего стола и папок, а сделать как в предложенном .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)
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.