使用 runas 以管理員身分執行 netsh

使用 runas 以管理員身分執行 netsh

我正在嘗試在 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) 變更管理員帳戶的屬性。

  1. 開啟 MMC 控制台並選擇本機使用者和群組。
  2. 右鍵單擊管理員帳戶並選擇屬性。
  3. 將出現“管理員屬性”視窗。
  4. 在「一般」標籤上,清除「帳戶已停用」複選框。
  5. 關閉 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 下執行提升的命令或您想傳遞參數,您需要一個真正的sudosu(例如這個,我自己的一部分漢密爾頓 C 殼:) 有一個插曲在應用程式清單中標記根據海拔要求。如果您這樣做,您將看到 UAC 提示。

相關內容