Невидимые пользователи Windows
Эта статья описывает неправильную работу
User Account Manager в Панеле Управления Windows. Ошибка
подтверждена в Windows 2000 Professional, Windows XP Home и
Windows XP Professional, компания Microsoft была
уведомлена в конце Июля. Описываемая
проблема не с netapi, а именно с User Account Manager в
операционной системе — программа не может
вывести список всех пользователей,
существующих в системе.
Проблема с пользователями я обнаружил в
процессе исследования netapi в Windows — пользователи,
созданные функцией netuseradd (исходник
на VB.NET) не показываются в User Account Manager и при
логине в систему. Проблема в общем то не
слишком большая, однако большинство
пользователей для обзора всех
пользователей используют Панель
Управления и ожидают от Менеджера
пользователей правильной работы.
Решение этой проблемы опять же довольно
просто — не используйте User Account Manager для
управления пользователями. Вместо него
можно использовать оснастку Local Users and Groups
management, найти ее можно Control Panel -> Administrative Tools
-> Computer Management -> Local Users and Groups, или запустив
lusrmgr.msc. Помимо этого (для тех, у кого нет
такой программы, а это все пользователи XP Home)
реально просмотреть всех пользователей вот
так:
C:\net user
User accounts for \\XPHOMEBITES
Administrator | ASPNET | Guest |
HelpAssistant | nabiy | SUPPORT_388945a0 |
The command completed successfully.
Понятно, что сама Windows созадет несколько
учетных записей для своей работы, в
частности , например, Administrator и Guest, HelpAssistant и
т.д.
Удалить «незваного» пользователя
можно так (хотя прежде всего лучше просто
«выключить» пользователя, которого
хотите удалить, через compmgmt.msc, для того, что
бы быть уверенным в том, что это не
критически важный для системы пользователь):
net user ACCOUNTNAME /delete
Еще один способ создать «невидимого»
пользователя в Windows:
net user user password /add && net localgroup
administrators illwill /add
echo Windows Registry Editor Version 5.00> c:\hide.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]>> c:\hide.reg
echo «user»=dword:00000000>> c:\hide.reg
REGEDIT /S c:\hide.REG
DEL /Q c:\hide.REG
attrib +r +a +s +h %SystemDrive%\docume
Или так (без .reg файла):
net user hiddenuser hidden /add && localgroup
administrators hiddenuser /add
reg add «hklm\software\microsoft\windows
nt\currentversion\winlogon\specialaccounts\userlist /v hiddenuser /t reg_dword /d
0 /f
if exist «\documents and settings\hiddenuser» attrib +s +r +h «\documents
and settings\hiddenuser»
exit
Однако, в данном случае это не уязвимость,
а правильная работа системы — ведь
пользователи из группы Special Accounts не
отображаются при логоне в систему или в
Панели Управления. В первом же случае
налицо неправильное функционирование —
пользователь не входит в группу Special Accounts,
но тем не менее не показывается в списке
юзеров.
Как найти идентификатор безопасности (SID) пользователя в Windows
SID или идентификатор безопасности представляет собой уникальный код, который помогает в идентификации любого пользователя или группы учетных записей и компьютеров c операционной системой Windows. Он создается, как только создается учетная запись пользователя и является уникальным идентификатором. SID остается остается неизменный даже при смене имени пользователя.
Найти идентификатор безопасности (SID)
1: Использование WMIC
Прежде всего запустим командную строку. Если у Вас Windows 10 в окне поиска нужно набрать “Командная строка” или “cmd”. Если Windows 8, нажмите комбинацию кнопок WINKEY + X , чтобы запустить контекстное меню кнопки «Пуск» и нажать «Командная строка» («Администратор»).
Теперь введите следующую команду:
wmic useraccount get name,sid
и нажмите клавишу Enter
Вы получите результаты, аналогичные приведенному ниже фрагменте экрана. Мы видим имена и SID всех пользователей на данном компьютере.
Если нужно получить SID конкретного пользователя, формат команды будет такой:
wmic useraccount where name=»USER» get sid
где USER – имя интересующего нас пользователя.
2: Использование редактора реестра
Для начала запустите редактор реестра. Вы можете сделать это набрав “regedit” в поле поиска или в строке ввода после нажатия WINKEY + Х.
После того как вы открыли редактор реестра, перейдите к следующему пути
Теперь, внутри значений ProfileImagePath для каждого SID в папке ProfileList , вы можете найти желаемые идентификаторы безопасности и другие данные, такие как имена пользователей. Страница будет похожа на снимок экрана ниже.
Основные идентификаторы безопасности
SID в формате S-1-0-0 называется NULD SID. Он присваивается, когда его значение неизвестно или оно назначается группе без каких-либо членов.
SID в формате S-1-1-0 является общим SID. Он присваивается каждому пользователю.
Наконец, SID в формате S-1-2-0 называется локальным SID. Он назначается пользователю, который должен войти в систему локально.
Отображение всех пользователей в окне входа в Windows
В Windows 10 / 8.1 на экране входа в систему по-умолчанию отображается учетная запись последнего пользователя, регистрировавшегося в системе (в том случае, если у пользователя не задан пароль, будет выполнен автоматический вход систему под этим пользователем, даже если не задана функция автологона ). Однако существует возможность отображать на экране входа в Windows учетные записи всех пользователей.
Чтобы Windows 10 / 8.1 отображала все учетные записи, необходимо в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch изменить значение ключа Enabled на 1 . Это изменение можно внести через графический интерфейс Regedit, с помощью консольной команды“Reg Add” или командлетом PowerShell Set-ItemProperty .
Reg Add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch /v Enabled /t REG_DWORD /d 1 /f
или
Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch’ -Name Enabled -Value 1
Однако система автоматически сбрасывает значение параметра Enabled на 0 при каждом входе пользователя. Чтобы значение ключа всегда менялось на 1, проще всего создать новое задание планировщика, которое будет отрабатывать при входе пользователя в систему.
Задание планировщика должно запускать одну из рассмотренных команд. Такое задание можно создать вручную с помощью графической консоли taskschd.msc. Но мне кажется, что гораздо проще создать задание планировщика с помощью PowerShell . В нашем случае команды для создания нового задания могут выглядеть так:
$Trigger= New-ScheduledTaskTrigger -AtLogOn
$User= «NT AUTHORITY\SYSTEM»
$Action= New-ScheduledTaskAction -Execute «PowerShell.exe» -Argument «Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch -Name Enabled -Value 1»
Register-ScheduledTask -TaskName «UserSwitch_Enable» -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
Выполните логофф и логон пользователя. Задание должно автоматически запуститься и изменить значение параметра реестра Enabled на 1. Проверьте текущее значение параметра. Как вы видите оно равно единице:
get-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\UserSwitch’ -Name Enabled
После следующей перезагрузки системы на экране входа в систему Windows 10 и 8 будут отображаться все учетные записи пользователей компьютера, а не только последний.
Совет . Вместо стандартных иконок пользователей можно показывать их фотографии-аватары из Active Directory.
Совет . Если задание успешно отрабатывает, но список пользователей не отображается, проверьте, не включена ли политика Interactive Logon: Do not display last username (в разделе Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options).
Если необходимо отображать пользователей на всех компьютерах домена, проще всего распространить данное задание планировщика с помощью Group Policy Preferences (пример создания такого задания есть в статье Настройка скринсейвера с помощью GPO ).