我认为没有所有可能帐户的最终清单。
您可以在用户输入字段(例如权限对话框)中使用不同类型的名称。
首先是标准Win32_Accounts,要获取完整列表,请打开PowerShell会话并运行:
get-wmiobject -class "win32_account" -namespace "root\cimv2" | sort caption | format-table caption, __CLASS, FullName
这些是通常的用户,组和内置帐户。
从Vista开始,有一类新帐户,称为虚拟帐户,因为它们不会显示在常规管理工具中。有时也称为服务帐户,其中至少有三种不同类型:
由于Vista,每个Windows服务都具有与之关联的虚拟帐户,即使它在另一个用户帐户下运行,甚至根本不运行也是如此。看起来像NT Service\MSSQLSERVER
要获得这些用途的列表:
get-service | foreach {Write-Host NT Service\$($_.Name)}
在ApplicationPoolIdentity下运行的每个IIS应用程序池都在一个特殊帐户下运行,该帐户称为 IIS APPPOOL\NameOfThePool
假设您已安装IIS管理脚本工具,则可以运行:
Get-WebConfiguration system.applicationHost/applicationPools/* /* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)}
在Server 2008+和Windows 8+上,您拥有Hyper-V,每个虚拟机都会创建自己的虚拟帐户,如下所示:
NT VIRTUAL MACHINE\1043F032-2199-4DEA-8E69-72031FAA50C5
获取列表使用:
get-vm | foreach {Write-Host NT VIRTUAL MACHINE\$($_.Id) - $($_.VMName)}
即使在权限对话框中不接受这些帐户,也可以将它们与icacls.exe一起使用以设置权限。
还有一个特殊的小组NT Virtual Machine\Virtual Machines
,没有出现在其他地方。所有虚拟机帐户都是该组的成员,因此您可以使用它来设置所有VM文件的权限。
这些名称是特定于语言的,例如以德语命名 NT Virtual Machine\Virtuelle Computer
dvm.exe进程(桌面窗口管理器)在用户下运行 Windows Manager\DWM-1
同样,您不能在权限对话框中使用这种类型的用户。这是不是真的有可能因为一个存在于每一个“桌面会话”要么列举这些,所以使用两个RDP会话时,你也有DWM-2
和DWM-3
除DVM-1
。因此,有尽可能多的台式机可供使用。
在某些情况下,通常在Active Directory域中时,也可以在权限对话框中使用计算机名称。
当使用PowerShell和“ JEA(足够的管理)”并通过PS远程会话连接到服务器时,可能会创建一个临时虚拟用户。
它们具有以下格式:
winrm virtual users\winrm va_x_computername_username
和一个以 S-1-5-94-
“ x”是整数。
分配NTFS权限时可以使用这些帐户,但是我不知道如何列出所有这些可能的虚拟用户。
在JEA会话中,您可以whoami
用来查找当前帐户名。
即使这些列表也无法为您提供所有可能的帐户。
例如,您可以创建一个应用程序池,FooBarPool
然后再次将其删除,您仍然可以IIS APPPOOL\FooBarPool
在权限对话框中使用它,因此在某处必须有一个内部列表。