我正在尝试在 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) 更改管理员帐户的属性。
- 打开 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
如果你想以自己的用户身份运行命令,或者传递参数,你需要一个真正的sudo
或su
(如这个,我自己的一部分汉密尔顿C壳:) 插曲在应用程序清单中标记需要提升权限。如果您这样做,您将看到 UAC 提示。