Hi 大家好
小弟需要大量背景移除程式IBM i Access for Windows V7R1
我利用PSTools 用系統管理員執行CMD,背景執行遠端移除程式
psexec \ PC Name or IP -u XXXX -p XXXX cmd (帳號是管理員的帳號)
MsiExec.exe /X{31E11496-1F84-4DCC-B07A-369B40B8B4A7} /quiet /norestart
但是遠端的程序就卡在那邊不會動,我在想應該是卡在UAC確認那個要按是的地方
請問有辦法用CMD繞過UAC直接移除,不用卡在UAC確認的地方無法正常移除
我在猜想卡在那邊不動,就是因為背景處裡沒有辦法回是
以下是我弄的批次檔
@echo off
CLS
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================
:init
setlocal DisableDelayedExpansion
set cmdInvoke=1
set winSysFolder=System32
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
if '%cmdInvoke%'=='1' goto InvokeCmd
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
goto ExecElevation
:InvokeCmd
ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"
:ExecElevation
"%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
:Uninstall IBM i Access for Windows 7.1
echo IBM i Access for Windows 7.1
MsiExec.exe /X{31E11496-1F84-4DCC-B07A-369B40B8B4A7} /quiet /norestart
或者還有甚麼方法可以利用機碼背景移除程式,麻煩大家了,謝謝!
直接下CMD 會出現Error code 1603
1.你到看過UAC在遠端電腦跳出來的畫面的嗎?
因為你只是猜測不是確定你要確定才行
2.程式碼看起來主要工作只有MsiExec.exe來卸載,那用誰來呼叫都可以
3.{31E11496-1F84-4DCC-B07A-369B40B8B4A7}除非當初都是用同一個安裝檔
部屬不然APPID可能會不會一樣,這點你清楚嗎?
4.UAC無法迴避 只要你使用帳戶去提升權限一定會遇到 除非移除過程不需要提升權限
5.有AD不靠AD是有車子硬要用馬去當交通工具,要躲過UAC用管理者權限做事情可以
打開你的GPO,用工作排程器去部屬工作,
工作排程運作的帳戶不是你的管理員帳戶,
而是Local System ,但是要提醒一件事情,
Local System帳戶帶出的CMD或者Powershell預設的系統變數是不一樣的,
另外在運作的時候任何互動式指令無法運作,
也呼叫不出任何與GUI有關的東西,與DC網域控制站的驗證帳戶也會因此轉變,
如果你對這方面完全沒有認知,還有很多問題要解決,這是我花時間體驗過的,
這邊不可能都打出來太多了,簡單來說做得到,但是有很多基本功你要弄懂,
我處理過這種狀況去大量部署防毒移除及安裝