คำตอบ:
ดูเหมือนว่ายูทิลิตีนี้ - การเริ่มต้นที่ซ่อน - จะทำสิ่งที่คุณต้องการหากคุณใช้สวิตช์ / uac นี่คือตัวอย่างบรรทัดคำสั่ง:
hstart /UAC "notepad.exe"
สิ่งนี้จะปรากฏขึ้นในกล่องโต้ตอบ UAC แทนที่จะถามรหัสผ่านเหมือนกับที่ runas ทำ
มีวิธีการทำเช่นนี้ใน PowerShell:
PS> Start-Process powershell -Verb runAs
powershell -Command "Start-Process 'C:\program.exe' -Verb runAs"
powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs"
ในกรณีที่ง่ายที่สุดไปเป็นค่าเดียวของตัวเองยกตัวอย่างเช่น ขอบคุณ!
$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCode
RunAdminเป็นยูทิลิตี้ขนาดเล็ก (150Kb) ที่ให้คุณเรียกใช้โปรแกรมจากบรรทัดคำสั่งด้วยสิทธิ์ยกระดับ (มันจะแสดง UAC) ตรงข้ามกับ Hidden Start นั้นฟรี
งานนี้สำหรับฉันในแพลตฟอร์มทั้งหมดรวมทั้งความต้องการของ Windows 10. ฉันมีความเรียบง่ายบางทีคุณอาจจะปรับตัวเข้ากับวิธีการที่ถ้าคุณต้องการพลังงาน
ฉันมาพร้อมกับสคริปต์ขนาดเล็กชื่อsudo.cmd
ตั้งชื่อสำหรับคำสั่ง sudo Linux มันทำงานได้ดีพอที่จะคิด ฉันได้ระบุข้อกำหนดขั้นตอนในการติดตามและสคริปต์อยู่ใกล้กับด้านล่างพร้อมตัวอย่าง ก่อนคำเตือน
คำเตือน : คำสั่งทำงานในไดเรกทอรีระบบ windows โดยค่าเริ่มต้น คุณจะต้องcd
ปลอดภัยที่ไหนสักแห่งก่อน
ข้อกำหนด :
sudo
คำสั่งจริงบน Linuxวิธีแก้ปัญหา :
sudo.cmd
sudo.lnk
ตัดสั้นไปที่ชื่อสคริปต์คำสั่งมันsudo
ลัดใน PATH หน้าต่างของคุณเพื่อให้สามารถมองเห็นได้Start in:
พา ธ ว่างเปล่าAdvanced
] - ตรวจสอบRun as Administrator
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
เมื่อคุณพิมพ์sudo dir
บนบรรทัดคำสั่ง Windows จะแสดง
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
ป๊อปอัพการควบคุมการเข้าถึง หากคุณคลิก "[ NO
]" จะไม่มีอะไรเกิดขึ้น Windows จะแสดงAccess is denied.
ข้อความ ""
เมื่อคุณคลิก "[ YES
]" คำสั่ง directory จะทำงานด้วยสิทธิ์ยกระดับ แน่นอนว่าคุณอาจต้องการสิ่งที่น่าสนใจยิ่งขึ้นเช่นการหยุดหรือสอบถามเกี่ยวกับบริการ:
sudo sc query SDRSVC
SDRSVC เป็นชื่อบริการสำหรับ "บริการ Windows Backup" ซึ่งจะแสดงรายการต่อไปนี้ในหน้าต่าง Cmd แยกต่างหาก:
[sudo]
administrator
---------------
sc query SDRSVC
SERVICE_NAME: SDRSVC
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
[done]
Press any key to continue . . .
sudo.cmd
สคริปต์ตัวเองเป็นพื้นฐานมาก อย่างที่ฉันบอกว่าความต้องการของฉันเรียบง่าย ฉันต้องการหยุดและเริ่มบริการในขณะที่ฉันปรับใช้รหัสสำหรับการทดสอบ
sudo.cmd
:
@echo off
@rem sudo.cmd
cd /d %temp%
@echo.
@echo. administrator
@echo. ---------------
cd
@echo.
@rem _________________________________________________
@rem -- Print usage . . .
@if [""] ==["%~1"] goto USAGE
@if /i ["--HELP"]==["%~1"] goto USAGE
@rem _________________________________________________
@rem
@echo. %*
@rem
%*
@rem
set EXIT_STATUS=%ERRORLEVEL%
@rem -- -- -- -- --
@echo.
@echo. [done]
@rem ______________________________________________________
:Exit
@echo.
@pause
exit /b %EXIT_STATUS%
@rem ______________________________________________________
:USAGE
@echo.
@echo ^Usage:
@echo. sudo ^<complete command line^>
@echo.
@echo. Attempts to rune the: ^<complete command line^>
@echo. under Administrator priviliges. Relies on Windows
@echo. prompt for elevated privileges.
@rem ______________________________________________________
@goto Exit
pause
คำสั่งรอให้คุณทบทวนผล หากคุณนำpause
หน้าต่างการบริหารออกมาปิดลงและคุณไม่รู้ว่าคำสั่งนั้นใช้ได้หรือไม่ ERRORLEVEL
จากคำสั่งจะถูกส่งกลับเช่นกัน
สิ่งนี้ใช้ได้กับ Windows 10 ไม่ได้ทดสอบกับ Windows รุ่นอื่น
ตัวอย่างการเปิดแผ่นจดบันทึกที่มีสิทธิ์ของผู้ดูแลระบบจาก cmd.exe ซึ่งเริ่มทำงานกับ PowerShell ซึ่งจะขอสิทธิ์ยกระดับ
C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"
สิ่งนี้จะให้กล่องโต้ตอบ UAC ของคุณ (หากเปิดใช้งาน) ด้วย [ใช่] [ไม่ใช่] หรือจะขอรหัสผ่านผู้ดูแลระบบ
อีกตัวอย่างหนึ่งในการเปิดไฟล์โฮสต์ด้วย notepad คือ:
C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"
ข้อมูลเพิ่มเติม: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6
-ArgumentList
พารามิเตอร์ไม่ใช่เพียงแค่พารามิเตอร์เพิ่มเติมสำหรับการเริ่มต้นกระบวนการ
ลองดูที่Start ++ - ซึ่งมีฟังก์ชั่นนี้พร้อมกับสิ่งที่มีประโยชน์อื่น ๆ อีกมากมาย ในการรันด้วยพรอมต์ UAC เพียงใช้sudo
ชื่อโปรแกรมของคุณที่บรรทัดคำสั่งดังที่แสดงที่นี่:
นี่คือคุณสมบัติอื่น ๆ (คุณสามารถเพิ่มของคุณเอง):
__COMPAT_LAYER=RunAsAdmin
คุณสามารถตั้งค่า cmd
แล้วคำสั่งที่จะทำงานในการแยกสูง
ตัวอย่าง.bat
:
rem Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /t REG_DWORD /v "NoBackgroundPolicy" /d "1"
rem Disable elevation
set __COMPAT_LAYER=
rem continue non elevated
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f
ตัวเลือกโหมดความเข้ากันได้ทั้งหมดอยู่ในรายการใน MS Tool Compatibility Toolkit
;
เป็นตัวคั่นความคิดเห็น "แฟ้มแบทช์ไม่รู้จักเครื่องหมายอัฒภาคและโดยทั่วไปจะทำให้เกิดข้อความแสดงข้อผิดพลาดเกี่ยวกับคำสั่งที่ไม่ดี"