我正在嘗試在 Windows 7 電腦上為供應商進行一些調試。我需要運行netsh
來設定參數。我嘗試從 cygwin/shell 視窗運行它,但出現“以管理員身份運行”失敗。
谷歌搜尋後,我發現有一個runas
命令的工作原理類似於sudo
.由於我的使用者帳戶 ( me
) 是管理員,因此我嘗試收到輸入密碼的runas /user:me "netsh ..."
提示;me
我輸入它;netsh
(大概在新cmd
視窗中運行)閃爍開啟和關閉;我從命令中得到了成功的返回(即 $? == 0)。
但顯然這還不夠好,因為參數沒有改變。我最終透過在 shell 的快捷方式上執行「以管理員身份運行」(然後netsh
正常運行)解決了這個問題。
有什麼技巧可以讓Windows/runas
意識到自己me
確實是個管理員?
答案1
登入屬於管理員群組的帳戶與以 (a) 提升權限或 (b) 作為內建管理員帳戶運作之間存在差異。
每當您以管理員身份執行時,根據定義,您總是會被提升。因此,如果run /user:administrator
該視窗在開啟時會提升,您將不會收到 UAC 提示,並且該netsh
命令應該運行。
但由於內建管理員帳戶始終以提升的權限運行並且不會產生 UAC 提示runas
,因此存在安全風險,尤其是在沒有密碼的情況下。這就是為什麼Microsoft 預設禁用管理員帳戶並要求您首先啟用它:
在 Windows® 7 中,預設會停用內建管理員帳戶。在先前版本的 Windows 中,管理員帳戶是在開箱即用體驗 (OOBE) 期間使用空白密碼自動建立的。
密碼為空的管理員帳號有安全風險。為了更好地保護系統,在 Windows 7 的所有全新安裝和升級中預設為內建管理員帳戶停用。
以下是啟用它的方法。 (您可以透過在「開始」功能表的「執行...」方塊中鍵入「mmc」來開啟 MMC。)
使用本機使用者和群組 Microsoft 管理主控台 (MMC) 變更管理員帳戶的屬性。
- 開啟 MMC 控制台並選擇本機使用者和群組。
- 右鍵單擊管理員帳戶並選擇屬性。
- 將出現“管理員屬性”視窗。
- 在「一般」標籤上,清除「帳戶已停用」複選框。
- 關閉 MMC 控制台。
另外,請注意,runas
不允許您將參數傳遞給您正在執行的程式:
RUNAS USAGE:
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<UserName> program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<UserName>] program
RUNAS /trustlevel:<TrustLevel> program
如果您想在您自己的使用者 ID 下執行提升的命令或您想傳遞參數,您需要一個真正的sudo
或su
(例如這個,我自己的一部分漢密爾頓 C 殼:) 有一個插曲在應用程式清單中標記根據海拔要求。如果您這樣做,您將看到 UAC 提示。