Войти

Показать полную графическую версию : скрипт чистильщика системы от установленных обновлений ms office


specialist
23-09-2013, 20:22
на одном из форумов написали скрипт чистильщика системы от установленных обновлений ms office
вкратце: выцепляет из реестра windows информацию об установленных офисных обновлениях и их именах в каталоге %windows%\installer , а потом безжалостно удаляет эти файлы и записи о них из реестра, в результате чего освобождается, в зависимости от выбранного набора приложений, от 500 мб до 2 гб свободного места на диске.


@echo off
set "path=%SystemRoot%;%SystemRoot%\system32;%SystemRoot%\system32\wbem"
set "productmask=\\0000.109"
for /f "delims=" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData" 2^>nul ^| findstr "\S-"') do (
for /f "delims=" %%j in ('reg query "%%i\products" 2^>nul ^| findstr /r /c:"%productmask%"') do (
for /f "tokens=2*" %%m in ('reg query "%%~j\InstallProperties" /v "LocalPackage" 2^>nul ^| findstr "REG_"') do (
del /f /q "%%~n"
reg delete "%%~j" /v "LocalPackage" /f
)
for /f "delims=" %%k in ('reg query "%%j\Patches" 2^>nul ^| findstr "Patches\\"') do (
for /f "tokens=2*" %%l in ('reg query "%%i\Patches\%%~nk" /v "LocalPackage" 2^>nul ^| findstr "REG_"') do (
del /f /q "%%~m"
reg delete "%%i\Patches\%%~nk" /f
reg delete "%%~k" /f
))))


Попробовал внедрить запуск батника в установщик офиса - не отрабатывает. То же самое получается если запустить батник напрямую из Total Commander. Если вставить в конец паузу ничего не показывает.

Если запустить батник из окна проводника вручную без прав администратора он пролетает с чем то вроде "недостаточно прав на данные операции" и ничего не удаляет - работает только если запустить ПКМ от имени Администратора из открытого окна проводника
Пробовал даже заворачивать батник в 7zip sfx и WinRar sfx с запросом запуска от Администратора (что раньше в случаях подобной необходимости помогало), однако и это не помогло.

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

ps: Все проблемы были выявлены в windows 7/8
-----------------------------
pps последний вариант утилиты можно скачать здесь http://rghost.net/49322760

Fortress1
24-09-2013, 11:31
Может быть с помощью автоит)

ПО другому никак) Возможно дать команду для запуска от имени пользователя с правами администратора с введением пароля, если пароля нет то не получится

посмотрите команду runas

specialist
24-09-2013, 12:34
уже делал ярлык для запуска с админскими правами и запускал его кликом по батнику
start "" clean.lnk
при этом происходит то же что и при запуске из Total Commander а именно ничего
однако если его запустить из окна проводника ПКМ от админа он так же отрабатывает как и clean.cmd приведенный выше
получается что все равно без явных действий пользователя (пкм от админа из окна проводника) ничего не работает... вобщем замкнутый порочный круг :)

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

может каких контролек echo можно наставить в тело цикла чтобы посмотреть что и где не отрабатывает...

Iska
24-09-2013, 12:57
specialist, ОС у Вас какой разрядности? А какой разрядности Total Commander, а?! Sfx'ы Вы с какой разрядностью делали?!

specialist
24-09-2013, 13:08
ОС у Вас какой разрядности? А какой разрядности Total Commander, а?! Sfx'ы Вы с какой разрядностью делали?! »
ОS = x64 (пробовал и на x86) виртуалки vmware
TC = x86 (только для контраста, т.к. запуск будет в конечном счете из config.xml средствами установщика ms office)
sfx = x86 (нужно чтобы на любых разрядностях запускалось)

gora
24-09-2013, 16:57
Если вставить в конец паузу ничего не показывает. »
Если действительно "ни чего", то скрипт где-то зависает и не доходит до паузы, а я думаю, что это не так и скрипт у Вас сразу вылетает на паузу, так?
На х64 ОС нужно и скрипт запускать из соответствующего приложения (х64 ТС, х64 SFX и т.д.).
Запустил его из x64 TC - отработал, а из х86 ТС окно консоли пусто, только сообщение от Pause.

Все del и reg delete закомментированы Echo. Портить рабочую систему желания нет.

specialist
24-09-2013, 18:57
а я думаю, что это не так и скрипт у Вас сразу вылетает на паузу, так? »
да, верно, не так выразился. сразу вылетает на паузу.
Все del и reg delete закомментированы Echo. Портить рабочую систему желания нет. »
все верно, поэтому и мучаю виртуалки с установленным Office и созданным после этого снимком системы.
если запустить из окна проводника без ПКМ от админа скрипт пролетает с выдачей
Ошибка: Отказано в доступе
вероятно на каждую попытку удалить найденный через реестр файл.
сейчас еще раз все переделал и получилось следующее:
- если завернуть в 7-zip sfx x86 с MiscFlags="4" то при простом запуске из окна проводника на x64 ОС скрипт сразу идет до паузы, а на x86 ОС все отрабатывает
- если завернуть в 7-zip sfx x64 с MiscFlags="4" то при простом запуске из окна проводника на x64 ОС все отрабатывает, но при этом файл нельзя использовать файл на x86 системах

какие можно сделать выводы?
скрипт пытается воспользоваться не теми файлами for, reg, del (например берет их в c:\Windows\System32 когда нужно в c:\Windows\SysWOW64) ?
команда reg query в x64 ОС пытается искать нужные значения в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\UserData вместо HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData ?

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

gora
24-09-2013, 19:10
какие можно сделать выводы? »
При запуске в х86 среде скрипт использует х86 cmd.exe и reg.exe. Последний не видит х64 разделов реестра и не находит нужных разделов. Скрипт может не видеть и файлов, если они окажутся в "недоступных", для х86 cmd, папках
что можно предпринять »
Используйте префикс x64\x86 или %%P для запуска скрипта из конфига x86 SFX.

specialist
24-09-2013, 19:49
gora, действительно, поменял запуск на
RunProgram="x86:hidcon:Clean.cmd"
RunProgram="x64:hidcon:Clean.cmd"
в x86 7-zip sfx модуле и все заработало

Спасибо!




© OSzone.net 2001-2012