“以pipe理员身份运行”的确切含义是什么?

在Windows 7上,我有一个命令行程序,由于文件写入权限错误而失败,每次运行来自“未知发布者”的命令行程序时,都会popup恼人的UAC对话框。

但是,如果通过右键单击并select“以pipe理员身份运行”启动我的控制台,则安装工作正常,即使UAC对话框仍然存在。

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

我的具体问题恰恰是:“以pipe理员身份运行”是做什么的? 迄今为止的答案都没有解决这个问题。 (例如,是否以'Administrator'用户的身份运行新进程?还是以当前用户的身份运行进程,但具有提升的权限?如果有,权限是什么?与我从我的权限用户在“pipe理员”组?

(具体来说,我使用的是SourceForge的“控制台”,而不是一个普通的CMD窗口,但我认为这并不重要,在安装Python分发包的时候,通过运行“python distribute_setup.py”新安装的Python3 MSI来自于python.org,它是64位Windows上的一个32位Python,请参阅安装Python并在Windows 7上分发给出“写入失败…权限被拒绝”

当您loginWindows时创build一个访问令牌。 这标识了你,你所属的组和你的特权。 并注意用户是否是pipe理员是由用户是否是pipe理员组的成员决定的。

没有UAC,当你运行一个程序时,它会得到一个访问令牌的副本,并控制程序可以访问的内容。

使用UAC,当你运行一个程序时,它会得到一个受限的访问令牌。 这是从组列表中删除“pipe理员”的原始访问令牌(以及其他一些更改)。 即使您的用户是pipe理员组的成员,该程序也不能使用pipe理员权限。

当您select“以pipe理员身份运行”并且您的用户是pipe理员时,程序将以原始不受限制的访问令牌启动。 如果您的用户不是pipe理员,则会提示您inputpipe理员帐户,并且该程序将在该帐户下运行。

所以…更多的挖掘,结果。 看起来,虽然我运行了一个正常的进程,而且还有一个“以pipe理员身份运行”,但是UAC已经closures。 把UAC转到媒体让我看到不同的结果。 基本上,这一切都归结为完整性水平,这是5。

例如,浏览器在低级别(1)下运行,而服务(系统用户)在系统级别(4)下运行。 在Windows完整性机制devise中,一切都得到了很好的解释。 启用UAC时,将创build具有中等级别(SID S-1-16-8192 AKA 0x2000添加)的进程,而“以pipe理员身份运行”时则使用高级别(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. 

现在差异如下:

 S-1-5-32-544 Attributes - Mandatory Default Enabled Owner 

为“作为pipe理员”,而

 S-1-5-32-544 Attributes - DenyOnly 

非pipe理员。

请注意,S-1-5-32-544是BUILTIN \ Administrators。 另外,特权更less,最重要的是要注意:

pipe理员:

 S-1-16-12288 Attributes - GroupIntegrity GroupIntegrityEnabled 

而对于非pipe理员:

 S-1-16-8192 Attributes - GroupIntegrity GroupIntegrityEnabled 

我希望这有帮助。

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

像“提升权限”,“限制访问令牌”,“pipe理员权限”…什么是pipe理员权限呢? 是无稽之谈。

这是通常从属于pipe理员组的用户运行的进程的ACCESS_TOKEN。

 0: kd> !process 0 1 test.exe PROCESS 87065030 SessionId: 1 Cid: 0d60 Peb: 7ffdf000 ParentCid: 0618 DirBase: 2f22e1e0 ObjectTable: a0c8a088 HandleCount: 6. Image: test.exe VadRoot 8720ef50 Vads 18 Clone 0 Private 83. Modified 0. Locked 0. DeviceMap 8936e560 Token 935c98e0 0: kd> !token -n 935c98e0 _TOKEN 935c98e0 TS Session ID: 0x1 User: S-1-5-21-2452432034-249115698-1235866470-1000 (no name mapped) User Groups: 00 S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Attributes - Mandatory Default Enabled 01 S-1-1-0 (Well Known Group: localhost\Everyone) Attributes - Mandatory Default Enabled 02 S-1-5-32-544 (Alias: BUILTIN\Administrators) Attributes - Mandatory Default Enabled Owner 03 S-1-5-32-545 (Alias: BUILTIN\Users) Attributes - Mandatory Default Enabled 04 S-1-5-4 (Well Known Group: NT AUTHORITY\INTERACTIVE) Attributes - Mandatory Default Enabled 05 S-1-2-1 (Well Known Group: localhost\CONSOLE LOGON) Attributes - Mandatory Default Enabled 06 S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users) Attributes - Mandatory Default Enabled 07 S-1-5-15 (Well Known Group: NT AUTHORITY\This Organization) Attributes - Mandatory Default Enabled 08 S-1-5-5-0-85516 (no name mapped) Attributes - Mandatory Default Enabled LogonId 09 S-1-2-0 (Well Known Group: localhost\LOCAL) Attributes - Mandatory Default Enabled 10 S-1-5-64-10 (Well Known Group: NT AUTHORITY\NTLM Authentication) Attributes - Mandatory Default Enabled 11 S-1-16-12288 (Label: Mandatory Label\High Mandatory Level) Attributes - GroupIntegrity GroupIntegrityEnabled Primary Group: S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Privs: 05 0x000000005 SeIncreaseQuotaPrivilege Attributes - 08 0x000000008 SeSecurityPrivilege Attributes - 09 0x000000009 SeTakeOwnershipPrivilege Attributes - 10 0x00000000a SeLoadDriverPrivilege Attributes - 11 0x00000000b SeSystemProfilePrivilege Attributes - 12 0x00000000c SeSystemtimePrivilege Attributes - 13 0x00000000d SeProfileSingleProcessPrivilege Attributes - 14 0x00000000e SeIncreaseBasePriorityPrivilege Attributes - 15 0x00000000f SeCreatePagefilePrivilege Attributes - 17 0x000000011 SeBackupPrivilege Attributes - 18 0x000000012 SeRestorePrivilege Attributes - 19 0x000000013 SeShutdownPrivilege Attributes - 20 0x000000014 SeDebugPrivilege Attributes - 22 0x000000016 SeSystemEnvironmentPrivilege Attributes - 23 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default 24 0x000000018 SeRemoteShutdownPrivilege Attributes - 25 0x000000019 SeUndockPrivilege Attributes - 28 0x00000001c SeManageVolumePrivilege Attributes - 29 0x00000001d SeImpersonatePrivilege Attributes - Enabled Default 30 0x00000001e SeCreateGlobalPrivilege Attributes - Enabled Default 33 0x000000021 SeIncreaseWorkingSetPrivilege Attributes - 34 0x000000022 SeTimeZonePrivilege Attributes - 35 0x000000023 SeCreateSymbolicLinkPrivilege Attributes - Authentication ID: (0,14e4c) Impersonation Level: Anonymous TokenType: Primary Source: User32 TokenFlags: 0x2000 ( Token in use ) Token ID: d166b ParentToken ID: 0 Modified ID: (0, d052f) RestrictedSidCount: 0 RestrictedSids: 00000000 OriginatingLogonSession: 3e7 

…这是一个ACCESS_TOKEN,通常由同一个用户以“以pipe理员身份运行”运行的进程。

 TS Session ID: 0x1 User: S-1-5-21-2452432034-249115698-1235866470-1000 (no name mapped) User Groups: 00 S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Attributes - Mandatory Default Enabled 01 S-1-1-0 (Well Known Group: localhost\Everyone) Attributes - Mandatory Default Enabled 02 S-1-5-32-544 (Alias: BUILTIN\Administrators) Attributes - Mandatory Default Enabled Owner 03 S-1-5-32-545 (Alias: BUILTIN\Users) Attributes - Mandatory Default Enabled 04 S-1-5-4 (Well Known Group: NT AUTHORITY\INTERACTIVE) Attributes - Mandatory Default Enabled 05 S-1-2-1 (Well Known Group: localhost\CONSOLE LOGON) Attributes - Mandatory Default Enabled 06 S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users) Attributes - Mandatory Default Enabled 07 S-1-5-15 (Well Known Group: NT AUTHORITY\This Organization) Attributes - Mandatory Default Enabled 08 S-1-5-5-0-85516 (no name mapped) Attributes - Mandatory Default Enabled LogonId 09 S-1-2-0 (Well Known Group: localhost\LOCAL) Attributes - Mandatory Default Enabled 10 S-1-5-64-10 (Well Known Group: NT AUTHORITY\NTLM Authentication) Attributes - Mandatory Default Enabled 11 S-1-16-12288 (Label: Mandatory Label\High Mandatory Level) Attributes - GroupIntegrity GroupIntegrityEnabled Primary Group: S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Privs: 05 0x000000005 SeIncreaseQuotaPrivilege Attributes - 08 0x000000008 SeSecurityPrivilege Attributes - 09 0x000000009 SeTakeOwnershipPrivilege Attributes - 10 0x00000000a SeLoadDriverPrivilege Attributes - 11 0x00000000b SeSystemProfilePrivilege Attributes - 12 0x00000000c SeSystemtimePrivilege Attributes - 13 0x00000000d SeProfileSingleProcessPrivilege Attributes - 14 0x00000000e SeIncreaseBasePriorityPrivilege Attributes - 15 0x00000000f SeCreatePagefilePrivilege Attributes - 17 0x000000011 SeBackupPrivilege Attributes - 18 0x000000012 SeRestorePrivilege Attributes - 19 0x000000013 SeShutdownPrivilege Attributes - 20 0x000000014 SeDebugPrivilege Attributes - 22 0x000000016 SeSystemEnvironmentPrivilege Attributes - 23 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default 24 0x000000018 SeRemoteShutdownPrivilege Attributes - 25 0x000000019 SeUndockPrivilege Attributes - 28 0x00000001c SeManageVolumePrivilege Attributes - 29 0x00000001d SeImpersonatePrivilege Attributes - Enabled Default 30 0x00000001e SeCreateGlobalPrivilege Attributes - Enabled Default 33 0x000000021 SeIncreaseWorkingSetPrivilege Attributes - 34 0x000000022 SeTimeZonePrivilege Attributes - 35 0x000000023 SeCreateSymbolicLinkPrivilege Attributes - Authentication ID: (0,14e4c) Impersonation Level: Anonymous TokenType: Primary Source: User32 TokenFlags: 0x2000 ( Token in use ) Token ID: ce282 ParentToken ID: 0 Modified ID: (0, cddbd) RestrictedSidCount: 0 RestrictedSids: 00000000 OriginatingLogonSession: 3e7 

如您所见,唯一的区别是令牌ID:

 Token ID: d166b ParentToken ID: 0 Modified ID: (0, d052f) 

VS

 Token ID: ce282 ParentToken ID: 0 Modified ID: (0, cddbd) 

对不起,我不能添加太多的光线,但我仍然在挖。

UPDATE

“作为Aministrator运行”只是一个命令,使程序能够继续进行一些需要pipe理员权限的操作,而不显示UAC警报。

即使您的用户是pipe理员组的成员,但您的某些应用程序需要pipe理员权限才能继续运行,因为如果应用程序正在执行一些特殊操作(如编辑系统文件或其他内容),则认为应用程序不安全。 这就是为什么Windows需要pipe理员权限来执行应用程序,并通过UAC警报通知您的原因。 并非所有的应用程序都需要Amnistrator帐户才能运行,而像您这样的一些应用程序需要pipe理员权限。

如果使用“以pipe理员身份运行”命令执行应用程序,则通过系统确认您的应用程序是安全的,并执行需要pipe理员权限的操作,并进行确认。

如果你想避免这种情况,只需禁用控制面板上的UAC。

如果您想深入了解,请阅读Microsoft论坛上的“以pipe理员身份运行”和Windows 7pipe理员组之间差异或此超级用户问题。

Windows 7要求你故意要求某些权限,这样恶意程序就不能对你做坏事。 如果您下载的免费计算器需要以pipe理员身份运行,您将知道某些事情已经结束。 有操作系统命令提升您的应用程序的权限(这将要求用户的确认)。

一个很好的描述可以在:

http://msdn.microsoft.com/en-us/magazine/cc163486.aspx#S4

Run as * Anything命令可以使您避免以使用runas命令的用户身份注销和login。

黑梳子和黑豹文件夹开始程序要求提高特权的原因。 除非通过pipe理提示符,否则在Windows中对内核有0访问权限,那么它只是与O / S内核的虚拟关系。

Hoorah!

更清楚一点…具有KERNEL模式访问的软件程序可以全部访问所有计算机的数据及其硬件。

自Windows Vista以来,微软已经停止任何和所有的I / O进程直接访问内核(环0)。 我们得到的最接近的是一个作为虚拟内核访问分区创build的文件夹,但是从技术上来说不能访问内核本身,内核会在一半的时间内完成。

这是因为软件本身决定使用哪个令牌,所以如果它要求pipe理员访问令牌,而不是像在XP中一样允许与内核进行通信,则会提示允许每次访问内核。 更改UAC可以减less提示,但内核不会提示。

即使以pipe理员身份login,也会以标准用户的身份运行进程,直到提示您提升您拥有的权限。 我相信,pipe理员可以保存您input的凭据。 但它也写入pipe理员用户文件夹结构。

内核访问类似于Linux中的根访问权限当您提升权限时,您将自己从C:\的根目录中分离出来,并且包含可爱的环境variables。

如果你还记得蓝屏死机的话,那么当它被一个坏的I / O传到内核时,这个O / S就会closures

好的,让我们重新…

真正的问题 (以及一个很好的问题

作为pipe理员组的成员,做了什么?

(应答)1。 允许您在用户会话下调用pipe理员权限

注意:这个问题是错误的,一个是命令,另一个是应用策略的组对象。

打开命令提示符并键入runas /?

这将列出runas命令行可以使用的所有开关。

对于pipe理员组,这是基于GPEDIT或SECPOL,是否有域pipe理员存在或不存在或networking存在与否。

通常这些事情将对pipe理员组不受影响的计算机施加限制。

问题应该是

runas admin以用户身份运行的是什么?

要么

pipe理员组做了什么,定制的用户组不能做

你搅拌苹果和橘子。

干杯!