Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   скрипт чистильщика системы от установленных обновлений ms office (http://forum.oszone.net/showthread.php?t=268638)

specialist 23-09-2013 20:22 2222758

скрипт чистильщика системы от установленных обновлений ms office
 
на одном из форумов написали скрипт чистильщика системы от установленных обновлений 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 2223030

Может быть с помощью автоит)

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

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

specialist 24-09-2013 12:34 2223061

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

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

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

Iska 24-09-2013 12:57 2223076

specialist, ОС у Вас какой разрядности? А какой разрядности Total Commander, а?! Sfx'ы Вы с какой разрядностью делали?!

specialist 24-09-2013 13:08 2223081

Цитата:

Цитата Iska
ОС у Вас какой разрядности? А какой разрядности Total Commander, а?! Sfx'ы Вы с какой разрядностью делали?! »

ОS = x64 (пробовал и на x86) виртуалки vmware
TC = x86 (только для контраста, т.к. запуск будет в конечном счете из config.xml средствами установщика ms office)
sfx = x86 (нужно чтобы на любых разрядностях запускалось)

gora 24-09-2013 16:57 2223196

Цитата:

Цитата specialist
Если вставить в конец паузу ничего не показывает. »

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

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

specialist 24-09-2013 18:57 2223275

Цитата:

Цитата gora
а я думаю, что это не так и скрипт у Вас сразу вылетает на паузу, так? »

да, верно, не так выразился. сразу вылетает на паузу.
Цитата:

Цитата gora
Все 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 2223288

Цитата:

Цитата specialist
какие можно сделать выводы? »

При запуске в х86 среде скрипт использует х86 cmd.exe и reg.exe. Последний не видит х64 разделов реестра и не находит нужных разделов. Скрипт может не видеть и файлов, если они окажутся в "недоступных", для х86 cmd, папках
Цитата:

Цитата specialist
что можно предпринять »

Используйте префикс x64\x86 или %%P для запуска скрипта из конфига x86 SFX.

specialist 24-09-2013 19:49 2223313

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

Спасибо!


Время: 08:51.

Время: 08:51.
© OSzone.net 2001-