"以管理员身份运行"究竟做了什么?

Jon*_*ley 62 windows privileges administrator runas windows-7

在Windows 7上,我有一个命令行程序因文件写入权限错误而失败,并且每次运行来自"未知发布者"的命令行程序时都会弹出恼人的UAC对话框.

但是,如果我通过右键单击并选择"以管理员身份运行"来启动我的控制台,那么即使UAC对话框仍然存在,安装也能正常工作.

我的用户已经是"管理员"组的成员,那么"以管理员身份运行"的确是什么使我的安装工作?

我的具体问题恰恰是:"以管理员身份运行"是做什么的?迄今为止的答案都没有解决这个问题.(例如,它是以"管理员"用户身份运行新进程吗?还是以当前用户身份运行进程,但是具有提升权限?如果是,具有哪些权限?这与我从我获得的权限有什么不同?用户在"管理员"组中?

(具体来说,我使用的是来自SourceForge的'Console' ,而不是常规的CMD窗口,但我认为这不重要.这就是在安装Python'distribute'包时通过在'python distribute_setup.py'上运行从python.org新安装的Python3 MSI,它是在64位Windows 32位的Python.参见安装Python和Windows 7发布给"写作失败...权限被拒绝")

arx*_*arx 101

登录时,Windows会创建一个访问令牌.这可以识别您,您所属的群组以及您的权限.请注意,用户是否是管理员取决于用户是否是Administrators组的成员.

如果没有UAC,当您运行程序时,它会获取访问令牌的副本,这将控制程序可以访问的内容.

使用UAC,当您运行程序时,它会获得受限制的访问令牌.这是原始访问令牌,其中"管理员"已从组列表中删除(以及一些其他更改).即使您的用户是Administrators组的成员,该程序也无法使用管理员权限.

当您选择"以管理员身份运行"并且您的用户是管理员时,将使用原始的无限制访问令牌启动该程序.如果您的用户不是管理员,系统会提示您输入管理员帐户,该程序将在该帐户下运行.

  • 这与`runas`命令相比如何?这允许您以实际管理员身份运行,并且在我的计算机上,它要求输入管理员密码,并且我没有管理员密码. (2认同)

小智 10

所以...更多的挖掘,结果.似乎虽然我运行了一个正常的流程和一个"作为管理员",但我关闭了UAC.将UAC变为中等让我看到了不同的结果.基本上,这一切都归结为完整性水平,即5.

例如,浏览器在低级别(1)运行,而服务(系统用户)在系统级别(4)运行.在Windows完整性机制设计中,一切都得到了很好的解释.启用UAC时,将创建中等级别的进程(添加SID S-1-16-8192 AKA 0x2000),而当"以管理员身份运行"时,将创建高级别进程(SID S-1-16-12288 aka 0x3000处).

因此,普通用户(中等完整性级别)的正确ACCESS_TOKEN是:

0:000:x86> !token
Thread is not impersonating. Using process token...
TS Session ID: 0x1
User: S-1-5-21-1542574918-171588570-488469355-1000
Groups:
 00 S-1-5-21-1542574918-171588570-488469355-513
    Attributes - Mandatory Default Enabled
 01 S-1-1-0
    Attributes - Mandatory Default Enabled
 02 S-1-5-32-544
    Attributes - DenyOnly
 03 S-1-5-32-545
    Attributes - Mandatory Default Enabled
 04 S-1-5-4
    Attributes - Mandatory Default Enabled
 05 S-1-2-1
    Attributes - Mandatory Default Enabled
 06 S-1-5-11
    Attributes - Mandatory Default Enabled
 07 S-1-5-15
    Attributes - Mandatory Default Enabled
 08 S-1-5-5-0-1908477
    Attributes - Mandatory Default Enabled LogonId
 09 S-1-2-0
    Attributes - Mandatory Default Enabled
 10 S-1-5-64-10
    Attributes - Mandatory Default Enabled
 11 S-1-16-8192
    Attributes - GroupIntegrity GroupIntegrityEnabled
Primary Group:   LocadDumpSid failed to dump Sid at addr 000000000266b458, 0xC0000078; try own SID dump.
s-1-0x515000000
Privs:
 00 0x000000013 SeShutdownPrivilege               Attributes -
 01 0x000000017 SeChangeNotifyPrivilege           Attributes - Enabled Default
 02 0x000000019 SeUndockPrivilege                 Attributes -
 03 0x000000021 SeIncreaseWorkingSetPrivilege     Attributes -
 04 0x000000022 SeTimeZonePrivilege               Attributes -
Auth ID: 0:1d1f65
Impersonation Level: Anonymous
TokenType: Primary
Is restricted token: no.
Run Code Online (Sandbox Code Playgroud)

现在,差异如下:

S-1-5-32-544
Attributes - Mandatory Default Enabled Owner
Run Code Online (Sandbox Code Playgroud)

对于"作为管理员",同时

S-1-5-32-544
Attributes - DenyOnly
Run Code Online (Sandbox Code Playgroud)

对于非管理员.

请注意,S-1-5-32-544是BUILTIN\Administrators.此外,特权较少,最重要的是要注意:

管理员:

S-1-16-12288
Attributes - GroupIntegrity GroupIntegrityEnabled
Run Code Online (Sandbox Code Playgroud)

而对于非管理员:

S-1-16-8192
Attributes - GroupIntegrity GroupIntegrityEnabled
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.

进一步阅读:http://www.blackfishsoftware.com/blog/don/creating_processes_sessions_integrity_levels