为什么我的 Windows 7 中的 cmd.exe 以管理员权限打开?

为什么我的 Windows 7 中的 cmd.exe 以管理员权限打开?

为什么我的 cmd.exe 在 Windows 7 中以管理员权限打开。(我不会说以“管理员”身份运行,因为我知道 Win7 的“以管理员身份运行”选项以管理员权限而不是以管理员身份运行它,这就是这里发生的情况,尽管是自动的)

我通过单击我的用户名进入 Windows。

现在假设我启动 cmd.exe,我会以最清楚的方式表明我没有点击快捷方式

在此处输入图片描述

所以我转到 c:\windows\system32 并从那里运行 cmd.exe。

但结果是这样的

在此处输入图片描述

你可能会想,也许我登录的是管理员账户,但事实并非如此

在此处输入图片描述

而我直接从 system32 打开的 cmd.exe 也显示,虽然出于某种原因,它以管理员权限运行。但它是从用户帐户运行的。

在此处输入图片描述

添加

回答评论者“scott”的一些询问。我显然有一个名为“用户”的帐户,这应该很清楚。

评论者“scott”建议使用以下命令:

C:\Users\User>net user %username% | find "Group"
Local Group Memberships      *Administrators       *HomeUsers
Global Group memberships     *None

C:\Users\User>

(是的,该用户帐户是管理员组的成员,尽管这不会导致这种行为)。

评论者“scott”建议我运行此命令显示输出。

C:\Users\User>whoami /priv | find "Enabled"
SeChangeNotifyPrivilege         Bypass traverse checking                  Enabled
SeImpersonatePrivilege          Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege         Create global objects                     Enabled

C:\Users\User>

没什么不寻常的。如果您在全新安装时以管理员权限运行 cmd 提示符,则会显示相同的内容。显然,在我的情况下,这是自动发生的。那么,评论者 scott 是否可以说明他可能在那里寻找什么?

如果您whoami /priv | find "Enabled"在全新安装时从以管理员权限启动的 cmd 提示符运行该命令,那么它还会显示相同的三个项目(来自本地安全策略..用户权限已启用)。

因此,这些命令并没有显示任何超出我已经说过/展示的异常内容。

(至于评论者斯科特的其他问题,我没有处于安全模式,也不是全新安装,无论如何,这两件事都不会导致这种行为。至于评论者询问它何时开始的问题。我不知道这种行为是什么时候开始的。)

之前也有一些评论,现在已经消失了。其中一条建议修复安装,但我感兴趣的是哪种设置可能导致这种情况。

评论者 scott 问道:“运行 netplwiz 时会发生什么?”嗯,就像您按 Windows 键 + R(获取旧运行对话框)并键入 一样control userpasswords2<ENTER>。它会显示一个屏幕,您可以在其中设置用户是否必须输入密码才能登录,以及哪些用户可以自动登录。

在此处输入图片描述

但这一切都无关紧要。我确实有未隐藏的管理员帐户,但我没有以管理员身份登录。正如我所展示的,echo %username% 我以“用户”身份登录。

评论者“HelpingHand”表示“添加列‘Elevated’和‘UAC Virtualization’。cmd 的父进程 Explorer 的 Elevated 状态是什么。是“Elevated=No”、“UAC Virtualization-disabled”吗?也许应该关注父进程而不是子进程。我还将在运行进程监视器的情况下启动 cmd.exe。确认,在树视图中,它是上面检查的 Explorer.exe 进程的子进程,并检查 Explorer.exe 的 CreateProcess 操作以启动 cmd。具体来说,是调用 CreateProcess 的堆栈。最好检查一下有没有第三方模块。也许可以粘贴一张截图。”

Windows 7 没有“提升”列!提升列特定于 Windows 10(也许 Win8 也有,但谁在乎 Win8 呢)。在 Win10 中,列是选项卡特定的,并且与 Win10 的详细信息选项卡相关联。在 Win7 中,列不是选项卡特定的,也没有“提升”列。

您还提到了 Process Monitor,这是一个很棒的程序,但我认为您说的树是指 Process Explorer。Process Monitor 不会显示进程树。Process Explorer 会。这两个程序都是 sysinternals/Mark Russinovich 编写的很棒的程序,现在可从 MS 获得。如果您提到操作(如按操作过滤),那么您指的是 Process Monitor。我看不到 CreateProcess,但有 ThreadCreate

查看一个相当新、常规的 Windows 7 系统,它没有这个问题。进程资源管理器显示 cmd.exe 进程是它在“Explorer”下显示的 explorer.exe 进程的子进程,双击它显示父进程是 explorer.exe 实例。查看各种进程,有些将 UAC 虚拟化设置为允许,有些设置为禁用。Explorer 将其设置为禁用。cmd 将其设置为禁用。

查看有问题的 Windows 7 系统,查看进程资源管理器,我看到两个资源管理器进程。cmd 未显示在它们之下。但如果我双击 cmd,它会显示 explorer.exe 是父进程。查看任务管理器,没有进程将 UAC 设置为禁用。Explorer 将其设置为“不允许”,而 cmd 将其设置为“不允许”。在两个资源管理器进程中,一个具有带有“/factory....”的命令行,另一个只是对 explorer.exe 的常规调用。进程资源管理器显示 cmd.exe 的 PPID(父进程 ID/PPID),它与刚刚正常调用的 explorer.exe 实例匹配。

至于查看操作 ThreadCreate 和堆栈选项卡的进程监视器信息,这里是粘贴。

在此处输入图片描述

您提到考虑那里是否有第三方模块。我没有看到那里有任何第三方模块/dll 或 exe。

答案1

似乎整个问题都基于一个错误的前提,即“Administrator:”前缀表示进程正在运行的帐户名。但事实并非如此。

但这一切都无关紧要。我确实有未隐藏的管理员帐户,但我没有以管理员身份登录。正如我在 echo %username% 中显示的那样,我以“用户”身份登录。

但所有这些都无关紧要。“管理员:”前缀实际上并不表示管理员帐户 – 它表示一个管理员,即程序以管理员身份运行团体

此前缀是由 Windows Conhost 添加的,因为 Windows 7 通常使用 UAC,并导致所有交互式登录以降低的权限运行,尽管具有组成员身份 - 只有在您确认安全提示后,“提升”的进程才会获得完全权限。因此,如果您使用“以管理员身份运行”菜单项以提升权限运行 cmd.exe,则通常会在 Cmd 的标题栏中看到此前缀。

但如果系统已禁用 UAC,全部您的“用户”运行的进程具有完全特权的安全令牌,并且程序始终将自己视为“以管理员身份运行”。

请参阅有关禁用 UAC 的其他线程,并按照其相反的说明重新启用 UAC:在 Windows 7 上禁用 UAC?

相关内容