在 Windows 8 上从命令行以管理员身份运行

在 Windows 8 上从命令行以管理员身份运行

我正在尝试以管理员身份运行记事本,以便可以从命令行编辑我的主机文件。

我试过了runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"然后输入我的密码然后我得到了

RUNAS 错误:无法运行 - notepad c:\windows\system32\drivers\etc\hosts 1327:帐户限制阻止此用户登录。例如:不允许使用空白密码、登录次数受限或已强制执行策略限制。

PS:我知道如果我授予我的用户帐户权限,我就可以编辑它而无需以管理员身份运行。但我想知道如何在不更改主机文件权限的情况下做到这一点。

答案1

好的,原因无法正常工作的是 Windows Vista 及更新版本中的安全模型。管理员组中的帐户仍会以受限用户身份运行未明确提升的所有内容。例外情况是Administrator运行一切提升。因此,通常认为将其用作登录帐户是不合适的,并且通常会被禁用。

您可以启用它,然后runas以该帐户身份调用。这会带来一些问题 - 现在您正在使用不同用户的环境运行,该环境变量可能设置不同。1

更好的方法是通过 UAC 提升当前用户权限。遗憾的是,标准命令提示符不包含该功能 - 但第三方程序和内置的 PowerShell 和 WSHell (VBScript) 都可以实现该功能。


借贷来自我的另一个答案,您可以直接使用以下命令调用 PowerShell 命令powershell -c

powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts

它基本上告诉 PowerShell 运行以下命令(start别名为Start-Process):

Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts

这里的技巧是传递动词runas,触发 UAC。

Start-Process -Verb runas标准 cmd都不会runas传递当前工作目录, 所以始终使用完整路径以这种方式提升的任何命令。

还要注意,像某些参数-c可能会与Start-Process参数发生冲突,因此最安全的方法是:

powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"

1 注意:这仅适用于用户的环境变量。在父进程中设置的环境变量不通过 UAC 传递!这也适用于runas,而且情况甚至更糟,因为您甚至无法获得正确的用户变量。

答案2

最有可能的是,您尚未启用管理员帐户。

以下是启用管理员帐户的说明

你还会发现有关 Runas 的更多信息在 Microsoft 网站上。

答案3

您可以尝试以管理员身份打开命令提示符并通过它运行记事本。只需输入Notepad。执行此操作后,您可以单击文件,然后打开并导航到 hosts 文件并打开它。最后,您可以像平常一样保存。

相关内容