
當我嘗試使用 runas 來提升權限時,我發現了一些事情。簡單的 Win10 機器,具有已擁有管理員權限的單一使用者。我需要透過腳本寫入特定的註冊表項,但當我直接嘗試使用 reg 命令時,我收到「存取被拒絕」的訊息。
> reg ...
ERROR: Access is denied.
如果我嘗試:
> runas /user:Administrator Command
Enter the password for Administrator:
1326: The user name or password is incorrect.
它拒絕我的用戶密碼。我認為本地電腦上沒有特定的管理員密碼,對嗎?沒有其他帳戶了。試:
> runas /user:MyUser Command
Enter the password for MyUser:
740: The requested operation requires elevation
那麼如何從命令列提升權限?為什麼我在這裡看不到我有管理員權限:
>runas /showtrustlevels
The following trust levels are available on your system:
0x20000 (Basic User)
編輯:也許我應該更清楚我想做什麼。我想從 C 程式更改 WT_KEY_HKLM,「Software\Microsoft\Windows\CurrentVersion\Run」。我可以直接在 XP 中執行此操作,但在更新版本的 Windows 中,它沒有效果。事實上,從命令列對此鍵執行“reg”會導致存取被拒絕。我不想以提升的權限運行我的程序,所以我的想法是做類似 system("runas reg ...") 的事情,它會要求輸入密碼並更改註冊表。但我什至無法從命令列獲取該命令。也許有人可以建議正確的方法來做到這一點?
答案1
將 [user] 和 [command] 替換為您要使用的內容並嘗試一下:
powershell.exe -ExecutionPolicy Bypass -command "& {Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs'}"
優點:
- 它可以在未提升的命令提示字元、運行視窗和視窗捷徑中使用
- 它僅提升命令。提升是作為執行命令的一部分完成的,而不是執行 PowerShell 視窗。
缺點:
- 它總是會提示您登入(無法像 runas 那樣保存憑證)。 - 這可能是專業人士。
- 如果啟用了UAC,會有UAC提示-這是使用UAC進行提升時不可避免的。
- 它在處理憑證和提升時會開啟(並關閉)2 個 PowerShell 視窗
- 命令中的引號是有問題的(或至少會很快變得複雜)。您將需要將任何需要引號的命令放入批次檔中,並將批次檔作為命令執行。
如果您想從 PowerShell 提示字元執行此命令,可以將其縮短為:
Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs`'
S。
答案2
預設情況下,管理員帳戶被鎖定,因此其他人無法濫用它。如果您嘗試對「runas /user:Administrator」指令使用空白密碼,您可以看到該帳號已被鎖定。
如果您的使用者已經具有管理權限,您應該能夠存取“reg”命令。在我的機器上,我能夠。
不幸的是,您不能使用“runas”來存取提升的命令;您必須透過提升的命令提示字元來執行此操作。這可以使用“runas”命令(在您的情況下不起作用)或右鍵單擊“cmd.exe”並選擇“以管理員身份運行”來建立。
答案3
您可以透過右鍵單擊命令列圖示或 cmd.exe 並選擇以管理員身份執行來以管理員身份執行命令列。這樣您將處於提升的命令提示字元下,並且不會出現您所描述的問題。此外,您在鍵入命令時不必使用 runas。