2012-01-24 44 views
52

在Windows上  7,我有一個命令行程序,由於文件寫入權限錯誤而失敗,每次運行來自「未知發佈者」的命令行程序時,都會彈出令人討厭的UAC對話框。'以管理員身份運行'具體做什麼?

但是,如果通過右鍵單擊並選擇「以管理員身份運行」來啓動我的控制檯,那麼安裝工作正常,即使UAC對話框仍然存在。

我的用戶已經是「管理員」組的成員,那麼'以管理員身份運行'究竟是什麼讓我的安裝工作?

我的具體問題恰恰是:'以管理員身份運行'是做什麼的?迄今爲止的答案都沒有解決這個問題。 (例如,它是以'Administrator'用戶身份運行新進程嗎?還是以當前用戶的身份運行進程,但具有提升的權限?如果有,權限是什麼?這與我從我的權限用戶在'管理員'組中?

(具體來說,我使用的是'控制檯'從SourceForge,不是一個普通的CMD窗口,但我不認爲這很重要。 「運行包‘從python.org蟒蛇distribute_setup.py’上新安裝的Python3 MSI,分發這是對64位32位的Python的Windows。見Installing Python and distribute on Windows 7 gives "Writing failed ... permission denied"

+0

你需要做UAC的網絡搜索,並閱讀這個相當古老的技術 –

+0

我不明白你爲什麼說大衛 - 我的問題不是關於UAC - 它是關於'以管理員身份運行'。我花了大部分時間花費大量時間進行搜索,但還沒有找到答案。 –

+0

你的問題絕對是關於UAC的。以管理員身份運行時使用管理員令牌而不是受限制的令牌運行。做網絡搜索並閱讀有關不同類型的標記。 –

回答

93

當您登錄Windows時創建訪問令牌。這可以識別您,您所屬的組和您的特權。並注意用戶是否是管理員是由用戶是否是管理員組的成員來決定的。

如果沒有UAC,當你運行一個程序它獲得訪問令牌的副本,而這個控制哪些程序可以訪問。

使用UAC時,當您運行一個程序時,它會得到一個受限訪問令牌。這是從組列表中刪除「管理員」的原始訪問令牌(以及其他一些更改)。即使您的用戶是管理員組的成員,該程序也不能使用管理員權限。

當您選擇「以管理員身份運行」,你的用戶是管理員程序與原始不受限制的訪問令牌啓動。如果您的用戶不是管理員,系統會提示您輸入管理員帳戶,並且該程序在該帳戶下運行。

+0

當我禁用UAC時,它似乎沒有完全禁用它。將此添加到註冊表並重新啓動似乎解決了。不知道爲什麼? 'reg add HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ policies \ system \ v EnableLUA/t REG_DWORD/d 0/f' –

+2

這與'runas'命令相比如何?這允許您以實際管理員身份運行,並在我的計算機上請求管理員密碼,並且我沒有管理員密碼。 – CMCDragonkai

0

的Windows 7需要你故意問對於某些特權這樣一個惡意程序就不能對你做壞事。如果您下載的免費計算器需要以管理員身份運行,那麼您將知道某些事情已經結束。有操作系統命令提升您的應用程序的權限(這將要求用戶的確認)。

一個很好的說明,可以發現:

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

+0

嘿。謝謝你的回答,但是其中的所有句子已經很好理解了。你還沒有回答真正的問題:「作爲管理員組成員的管理員做什麼」是做不到的?「 –

+0

它提升了權限(只要你的用戶被允許)。 – vextorspace

+0

該鏈接被有效破解(重定向到,「MSDN Magazine Issues and Downloads」)。 –

1

UPDATE

「運行方式Aministrator」只是一個命令,讓程序繼續運行需要管理員權限的一些操作,而不顯示UAC警報。

即使您的用戶是管理員組的成員,您的某些應用程序也需要管理員權限才能繼續運行,因爲如果應用程序正在執行某些特殊操作(如編輯系統文件或某事)其他。這就是爲什麼Windows需要管理員權限才能執行應用程序,並通過UAC警報通知您的原因。並非所有應用程序都需要Amnistrator帳戶才能運行,並且某些應用程序(如您的)需要管理員權限。

如果使用'以管理員身份運行'命令執行應用程序,則在您確認後通知系統您的應用程序是安全的並執行需要管理員權限的操作。

如果您想避免這種情況,只需在控制面板上禁用UAC即可。

如果您想進一步閱讀微軟論壇上的Difference between "Run as Administrator" and Windows 7 Administrators Group問題或this SuperUser問題。

+0

嘿。謝謝你的回答,但我仍然很困惑。你是否說'以管理員身份運行'以不同的用戶身份運行該進程? '管理員'用戶?這對我很好奇,因爲從這樣的終端執行cygwin的「whoami」仍然顯示我的原始用戶名,而不是「管理員」,並且從該終端創建的文件由我擁有,而不是由管理員擁有。你是否也在說用戶Administrator具有「管理員」組成員不具備的其他特權? –

+1

禁用UAC很好地擺脫惱人的對話框,但它不能解決我的主要問題,即由於缺少privs而導致命令行安裝程序失敗。 –

+3

@JonathanHartley禁用UAC是一個壞主意。你想看到這些提示。 –

1

像「提升特權」,「限制訪問令牌」,「管理員權限」 ......到底是什麼管理員權限呢?是無稽之談。

下面是一個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,用於通過「以管理員身份運行」的同一用戶正常運行的進程。

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) 

對不起,我沒有太多的光加入到這個還沒有,但我仍在挖掘。

+1

具體細節很好。祝你好運。 –

8

所以...更多的挖掘,結果。看起來,雖然我運行了一個正常的進程並且有一個「以管理員身份運行」,但是我關閉了UAC。將UAC轉到媒介允許我看到不同的結果。基本上,這一切歸結爲誠信水平,這是5

的瀏覽器,例如,在低等級(1)運行,而服務(系統用戶)在系統級別上運行(4)。一切都很好地解釋Windows Integrity Mechanism Design。啓用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. 

,差異如下:

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

爲 「作爲管理員」,而

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

非管理員。

請注意,S-1-5-32-544是BUILTIN \ Administrators。此外,有較少的特權,而最重要的一點需要注意:

管理:

S-1-16-12288 
Attributes - GroupIntegrity GroupIntegrityEnabled 

而對於非管理員:

S-1-16-8192 
Attributes - GroupIntegrity GroupIntegrityEnabled 

我希望這有助於。

延伸閱讀:http://www.blackfishsoftware.com/blog/don/creating_processes_sessions_integrity_levels

+0

一些upvotes,用於添加特定內容和鏈接到背景。 –

+1

Andrei:良好的信息,但下次只需編輯您現有的答案以添加附加信息而不是創建新答案。 –

+1

最後一個鏈接被打破(404)。 –

0

的運行方式*任何命令把你從註銷併爲您使用runas命令爲用戶登錄。

原因程序要求這個提升的特權從黑梳子和Panther文件夾開始。除非通過管理提示符,否則在Windows中對內核的訪問權限是0,並且它只是與O/S內核的虛擬關係。

Hoorah!

0

稍微清晰一個軟件程序有內核模式訪問可以完全訪問所有計算機的數據及其硬件。

由於Windows Vista微軟已經停止任何和所有I/O進程直接再次訪問內核(環0)。我們得到的最接近的是一個作爲虛擬內核訪問分區創建的文件夾,但從技術上講,不能訪問內核本身;內核遇到一半。

這是因爲軟件本身決定使用哪個令牌,所以如果它要求管理員訪問令牌,而不是像在Windows   XP上那樣允許與內核進行通信,則會提示您允許訪問內核和每一次。更改UAC可以減少提示,但內核不會提示。

即使您以管理員身份登錄,您仍然以標準用戶身份運行進程,直到提示您提升您的權限。我相信,由於管理員可以保存您輸入的憑據,因此登錄。但它也寫入管理員用戶文件夾結構。

內核訪問類似於Linux中的根訪問。當你提升你的權限時,你正在將自己從C:\的根目錄中分離出來,並且包含可愛的環境變量。

如果您還記得藍屏死機,當操作系統認爲壞的I/O到達內核時,操作系統將關閉。

0

好吧,讓我們再次重申...

實際問題(在那個一個極好的)

什麼是‘以管理員身份運行’做,作爲一個成員的管理員組沒有?

(答案)1。它允許您在用戶會話下調用管理員權限。

注意:這個問題是錯誤的;一個是命令,另一個是應用策略的組對象。打開命令提示符並輸入runas /?

這將列出runas命令行可以使用的所有開關。

對於管理員組,這是基於GPEDIT或SECPOL以及是否存在域管理員或存在或不存在網絡。

通常這些事情將對管理員組不受影響的計算機施加限制。

的問題應該是

什麼的RunAs管理員做到這一點作爲用戶運行不?

OR

什麼是管理員組做一個自定義的用戶羣可以不?

您正在混合蘋果和橘子。

相關問題