請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索
回覆 10則 瀏覽 2536篇

[問題已解決] 是否有指令可以召喚被工作排程器賦予最高權限的程式

該用戶從未簽到

發表於 2022-6-8 15:32 | 顯示全部樓層 |閱讀模式
本帖最後由 jmsdhn 於 2022-6-10 21:15 編輯

打擾了!
如果這是亂想
還請包涵
是關於UAC的個別避開問題

假定有一BAT
內容包含
Reg.exe add "HKCR\AAAFile\DefaultIcon" /ve /t REG_SZ /d "AAA.ico" /f

(上述指令必須管理員權限才能執行)
而且已經把這個BAT加入工作排程器
且賦予【最高權限執行】
在登入或啟動都可以有效正確執行

問題不是上述
而是
是否有甚麼方法
可以召喚這個被工作排程器加入的BAT
讓它不會出現UAC小視窗

目前只發現CCleaner
有這種參數可以避開
每次開它都不會出現UAC小視窗

感謝指教!

簽到天數: 1384

今日第6個簽到

發表於 2022-6-8 19:38 | 顯示全部樓層
請服用
放在最前面

@ECHO OFF
setlocal enableDelayedExpansion
REM ===============================================================
:: BatchGotAdmin (Run as Admin code starts)
REM ===============================================================
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B
:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
REM ===============================================================
cls

使用道具

該用戶從未簽到

 樓主| 發表於 2022-6-10 10:30 | 顯示全部樓層
感謝大大回應
不過
感覺不太像

這是個人知道類似相同動作的指令:

set _Args=%*
if "%~1" NEQ "" set _Args=%_Args:"=%

fltmc 1>nul 2>nul || (
        cd /d "%~dp0"
        cmd /u /c echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~dp0"" && ""%~dpnx0"" ""%_Args%""", "", "runas", 1 > "%temp%\GetAdmin.vbs"
        "%temp%\GetAdmin.vbs"
        del /f /q "%temp%\GetAdmin.vbs" 1>nul 2>nul
        exit
)


兩者動作相同之處在於
在批次檔內強制以管理員模式執行批次檔的動作

不過個人的想像是
把需要以【管理員模式執行的批次指令(BAT)】加入工作排程並賦予最高權限
因為工作排程賦予的最高權限可以不出現UAC
然後
再用一般的BAT(或其他)來召喚這個【工作排程】

上述想像的動作
類似CCeaner可以掠過UAC警告般


可能終歸想像吧
CCeaner內部或許有個參數可以在執行時隨時告知掠過UAC之類的

使用道具

該用戶從未簽到

發表於 2022-6-10 18:37 | 顯示全部樓層
本帖最後由 maodou 於 2022-6-10 18:41 編輯

  • 打開 工作排程器 taskschd.msc
  • 工作排程器程式庫 新增資料夾 NoUACprompt




  • NoUACprompt上右鍵 建立工作 Regedit, 勾選 以最高權限執行


  • 動作 -> 新增
  •     程式或指令碼
  •     新增引數 (要修改的registry內容放在 C:\test\R.reg)
  •     確定






  • 用手動執行測試看看:
    1. SCHTASKS /Run /TN "\NoUACprompt\Regedit"
    複製代碼





  • 詳細解說,熱心助人

    foster 貢獻度 +5

1 0

使用道具

該用戶從未簽到

 樓主| 發表於 2022-6-10 21:12 | 顯示全部樓層
本帖最後由 jmsdhn 於 2022-6-10 22:24 編輯

感謝大大分享教學
這就是個人要的CMD指令!!!
是CMD指令耶!!!

原來要執行SCHTASKS這個命令
然後把匯入的工作排程以這命令來執行就可以了

感謝大大這麼細緻的箭頭指示
這些很重要
雖然這些動作個人也常常做
但這些指示
可以讓個人清楚分別真正不知道的部分

想再請教
若個人曾經把某個工作排程匯出成XML
那這指令SCHTASKS可以用來匯入嗎?
還是說
只能用【工作排程器】介面來手動匯入?
感謝指教!


好像SCHTASKS /Create /?
有一些相關說明
個人再研究看看

個人目前只知道建立XML再手動匯入

就像這樣
::建立XML
::■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
echo ^<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^>>        %OUT%
echo   ^<RegistrationInfo^>>>                                                                                                                                %OUT%
echo     ^<URI^>\%排程名稱%^</URI^>>>                                                                                                                %OUT%
echo   ^</RegistrationInfo^>>>                                                                                                                                %OUT%
echo   ^<Triggers^>>>                                                                                                                                                %OUT%
echo     ^<BootTrigger^>>>                                                                                                                                        %OUT%
echo       ^<Enabled^>true^</Enabled^>>>                                                                                                        %OUT%
echo     ^</BootTrigger^>>>                                                                                                                                        %OUT%
echo     ^<LogonTrigger^>>>                                                                                                                                        %OUT%
echo       ^<Enabled^>true^</Enabled^>>>                                                                                                        %OUT%
echo     ^</LogonTrigger^>>>                                                                                                                                %OUT%
echo   ^</Triggers^>>>                                                                                                                                                %OUT%
echo   ^<Principals^>>>                                                                                                                                                %OUT%
echo     ^<Principal id="Author"^>>>                                                                                                                %OUT%
echo       ^<LogonType^>InteractiveToken^</LogonType^>>>                                                                        %OUT%
echo       ^<RunLevel^>HighestAvailable^</RunLevel^>>>                                                                                %OUT%
echo     ^</Principal^>>>                                                                                                                                        %OUT%
echo   ^</Principals^>>>                                                                                                                                        %OUT%
echo   ^<Settings^>>>                                                                                                                                                %OUT%
echo     ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^>>>                                        %OUT%
echo     ^<DisallowStartIfOnBatteries^>true^</DisallowStartIfOnBatteries^>>>                                %OUT%
echo     ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^>>>                                                %OUT%
echo     ^<AllowHardTerminate^>true^</AllowHardTerminate^>>>                                                                %OUT%
echo     ^<StartWhenAvailable^>false^</StartWhenAvailable^>>>                                                                %OUT%
echo     ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^>>>                                        %OUT%
echo     ^<IdleSettings^>>>                                                                                                                                        %OUT%
echo       ^<StopOnIdleEnd^>true^</StopOnIdleEnd^>>>                                                                                %OUT%
echo       ^<RestartOnIdle^>false^</RestartOnIdle^>>>                                                                                %OUT%
echo     ^</IdleSettings^>>>                                                                                                                                %OUT%
echo     ^<AllowStartOnDemand^>true^</AllowStartOnDemand^>>>                                                                %OUT%
echo     ^<Enabled^>true^</Enabled^>>>                                                                                                                %OUT%
echo     ^<Hidden^>false^</Hidden^>>>                                                                                                                %OUT%
echo     ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^>>>                                                                                        %OUT%
echo     ^<WakeToRun^>false^</WakeToRun^>>>                                                                                                        %OUT%
echo     ^<ExecutionTimeLimit^>PT72H^</ExecutionTimeLimit^>>>                                                                %OUT%
echo     ^<Priority^>7^</Priority^>>>                                                                                                                %OUT%
echo   ^</Settings^>>>                                                                                                                                                %OUT%
echo   ^<Actions Context="Author"^>>>                                                                                                                %OUT%
echo     ^<Exec^>>>                                                                                                                                                        %OUT%
echo       ^<Command^>%~dp0%VBS%.vbs^</Command^>>>                                                                                %OUT%
echo     ^</Exec^>>>                                                                                                                                                %OUT%
echo   ^</Actions^>>>                                                                                                                                                %OUT%
echo ^</Task^>>>                                                                                                                                                        %OUT%
::■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


目前需要這類XML的量還算少ㄎㄎ


使用道具

該用戶從未簽到

發表於 2022-6-10 22:34 | 顯示全部樓層
jmsdhn 發表於 2022-6-10 21:12
那這指令SCHTASKS可以用來匯入嗎?
  1. SCHTASKS /Create /XML Regedit.xml /TN "\NoUACprompt\Regedit"
複製代碼
1 0

使用道具

該用戶從未簽到

 樓主| 發表於 2022-6-11 18:28 | 顯示全部樓層
感謝大大的教學
確實可以匯入

只不過
SCHTASKS /Create /XML
必須用管理員模式才能有效匯入就是

另外發現
原先以BAT建立XML再轉換成UTF-8格式
是無法匯入的
會出現
錯誤: 工作 XML 格式不正確。
(4,6):URI:請按任意鍵繼續 . . .

以notepad++發現匯出的XML
其編碼是UTF-16 LE BOM
看來要找看看有無小程式可以轉換成UTF-16 LE BOM
不然就要用notepad++手動轉存了

使用道具

該用戶從未簽到

發表於 2022-6-11 18:42 | 顯示全部樓層
本帖最後由 maodou 於 2022-6-11 18:52 編輯
jmsdhn 發表於 2022-6-11 18:28
看來要找看看有無小程式可以轉換成UTF-16 LE BOM

PowerShell:
  1. Get-Content .\test.xml | Set-Content -Encoding unicode .\test-UTF16LE.xml
複製代碼
Command Prompt:
  1. powershell -Command "Get-Content .\test.xml | Set-Content -Encoding unicode .\test-UTF16LE.xml"
複製代碼
1 0

使用道具

該用戶從未簽到

 樓主| 發表於 2022-6-11 21:38 | 顯示全部樓層
感謝大大支援!

powershell的能力好強
現在還不會感覺很汗顏啊!!!
剛找到這頁下方也有一些參數
https://docs.microsoft.com/zh-tw ... view=powershell-7.2

PowerShell 中的字元編碼
在 PowerShell (v6 和更新版本的) 中, 編碼 參數支援下列值:
  • ascii:使用 ASCII (7 位) 字元集的編碼方式。
  • bigendianunicode:使用位元組由大到小的位元組順序,以 UTF-16 格式編碼。
  • oem:針對 MS-DOS 和主控台程式使用預設編碼。
  • unicode:使用位元組由大到小的位元組順序,以 UTF-16 格式編碼。
  • utf7:以 UTF-7 格式編碼。
  • utf8:以 UTF-8 格式編碼 (沒有 BOM) 。
  • utf8BOM:使用 (BOM) 的位元組順序標記來編碼 UTF-8 格式
  • utf8NoBOM:以不含位元組順序標記的 UTF-8 格式來編碼 (BOM)
  • utf32:以 UTF-32 格式編碼。
所有輸出的 PowerShell 預設值為 utf8NoBOM 。


把unicode改成UTF8
也可以見效

真的沒用到不知道
這麼說
也不需用到ConvertZ了!
(個人也有在用ConvertZ把JSON檔轉UTF8)
這也太爽了!


感謝大大教學!

使用道具

該用戶從未簽到

發表於 2022-6-11 22:06 | 顯示全部樓層
本帖最後由 maodou 於 2022-6-11 22:38 編輯
jmsdhn 發表於 2022-6-11 21:38

在 PowerShell (v6 和更新版本的) 中, 編碼 參數支援下列值:


Windows 10/11 內建的是 Windows PowerShell (5.x) - powershell.exe
跟新的PowerShell 6.x/7.x 不太一樣喔 (要另外下載安裝) - pwsh.exe

Windows PowerShell 5.1 與 PowerShell 7.x 之間的差異


使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2022-6-28 22:40

Discuz! X

© 2009-2017 Microduo

快速回覆 返回頂部 返回列表