使用 runas 以管理员身份运行 netsh

使用 runas 以管理员身份运行 netsh

我正在尝试在 Windows 7 机器上为供应商进行一些调试。我需要运行netsh来设置一个参数。我尝试从 cygwin/shell 窗口运行它,但出现“以管理员身份运行”失败。

在 Google 上搜索后,我发现有一个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

如果你想以自己的用户身份运行命令,或者传递参数,你需要一个真正的sudosu(如这个,我自己的一部分汉密尔顿C壳:) 插曲在应用程序清单中标记需要提升权限。如果您这样做,您将看到 UAC 提示。

相关内容