問了一下ChatGPT,這只是一個提權用管理者權限運行目前的腳本指令而已,
你運行這段指令的時候,應該會跳出UAC吧,從命令來看也沒有腳本路徑
單純的只有呼叫CMD而已,這是要問什麼??
視窗雖然沒有顯示管理者權限,但裡面需要權限的指令確實可以運作了。
程式碼
:: 檢查是否已以管理員身份運行
net session >nul 2>&1
if %errorLevel% neq 0 (
PowerShell -Command "Start-Process cmd -ArgumentList '/c %~f0" -Verb RunAs"
exit /b
)
把他轉成POWERSHELL程序
你這段指令原本在哪裡執行的? CMD的批次檔?
@echo off >nul
reg add "HKCU\Console" /v "WindowPosition" /t REG_DWORD /d 0x00000000 /f >nul
%1 Mshta VBScript:CreateObject("Shell.Application").ShellExecute("CMD.exe","/C ""%~0"" ::","","RunAs",1)(Window.Close)&&Exit
mode con lines=80 cols=166 >nul
color 0 >nul
chcp 65001 >nul
Setlocal ENABLEDELAYEDEXPANSION
call :WordColor
goto :MainMenu
:MainMenu
cls
如果你上面貼的就是批次檔的內容,你想用Powershell去跑這個批次檔?
上面為系統管理員權限的窗口
下面則不是
而我是想把這段
%1 Mshta VBScript:CreateObject("Shell.Application").ShellExecute("CMD.exe","/C ""%~0"" ::","","RunAs",1)(Window.Close)&&Exit
用POWERSHELL的方式實現
但是我問AI,給我的POWERSHELL程序都會變成下面那個窗口(不是系統管理員)的狀態
你現在的這個指令,
如果是放在批次檔cmd或者bat結尾的檔案裡面的話,
他會提權改用管理者權限來跑這個批次檔,
批次檔裡面利用VBScript提權功能就是正常的,為何要改?
你是因為不想用VBScript來提權了,
所以要改用Powershell來提權??
是的
我更新回覆了,請去修改你想改的部份吧。
我好像忘了給你程式碼,你看的懂你要改哪裡嗎?
還是一樣會直接閃退,貌似不能用A.CMD呼叫PS1後,把目前的A.CMD變成ADMIN,只能用B.CMD呼叫PS1去開啟ADMIN的A.CMD,不像原本那個VBS程式碼能直接把目前的A.CMD變成ADMIN,但是也是謝謝妳拉~如果有更好的方法還請你提供了~感溫
你原本的也是一樣的做法喔,只是視窗沒有顯示出來給你看到而已
因為VBS在視窗隱藏的部份比較容易呼叫而已
站在系統的角度來看從Win7開始就是這樣在設計了
如果你很在意另外開視窗的話,
那一開始的CMD視窗只要用提權的方式執行就好了
這樣就不會需要用到VBS或者Powershell來提權CMD