Warning! Following is going to modify/replace some system files and modifying registry keys at HKLM. You will not able to use some builtin accessibility options.I think that some virus scanners do not like this (modifying system files this way) and may require excluding modified files from scan. Thats not all... we are replacing files that will run under mighty SYSTEM account, so your fresh scripts will have same permissions.
[optional] If you know how to behave as TrustedInstaller
while setting this up there is no need to change permissions.
[info] CWD
= something
Tells you Current Working Directory.
Okay, last warning is that there is possibility that small typo will lock you out of your system and you may need to take control back while being offline [in terms of running os].
First, take advantage of running programs at logon screen
One quick way to achieve this is to replace %windir%\System32\Utilman.exe
with your own program, in this case it is replaced with application that writes list of visible / hidden users to registry.
CWD
= anything you want
You need program that toggles visible users, one easy way to write simple programs is to use notepad
and any batch compiler. (linked compiler has built in editor)
If using this method you will need some code to place inside too:
@echo off
IF EXIST "%SYSTEMROOT%\System32\SwitchVisibleUsers\hidden.state" (
del %SYSTEMROOT%\System32\SwitchVisibleUsers\hidden.state
regedit /s "%SYSTEMROOT%\System32\SwitchVisibleUsers\displayusers.reg"
) ELSE (
echo "1" > "%SYSTEMROOT%\System32\SwitchVisibleUsers\hidden.state"
regedit /s "%SYSTEMROOT%\System32\SwitchVisibleUsers\hideusers.reg"
)
wmic process where (name="LogonUI.exe") delete
Here is explanation what above script does:
Let's break above code down, do not copypaste this!
First line checks if status file exists, filename quoted:
1| IF EXIST "%SYSTEMROOT%\System32\SwitchVisibleUsers\hidden.state" (
If file exists then delete file that we cheked:
2| del %SYSTEMROOT%\System32\SwitchVisibleUsers\hidden.state
And write displayusers.reg contents to registry:
3| regedit /s "%SYSTEMROOT%\System32\SwitchVisibleUsers\displayusers.reg"
4| ) ELSE (
If status file does not exist then create it:
5| echo "1" > "%SYSTEMROOT%\System32\SwitchVisibleUsers\hidden.state"
And write contents of hideusers.reg to registry:
6| regedit /s "%SYSTEMROOT%\System32\SwitchVisibleUsers\hideusers.reg"
7| )
Registry values written, kill LogonUI.exe to reload (LogonUI restarts)
8| wmic process where (name="LogonUI.exe") delete
Replace system files
After that save your file as Utilman.cmd
and compile it so it will be Utilman.exe
, we are good if you have compiled your batch and your .exe
file is working. Copy your fresh utilman.exe
to clipboard.
CWD
= %SYSTEMROOT%\System32\
Now, replace microsoft's utilman.exe
with your own fresh utilman.exe
. You may need to take ownership of files and set permissions to allow modifying files at system32.
Define special users (registry keys/values to change):
Create new directory SwitchVisibleUsers
.
CWD
= %SYSTEMROOT%\System32\SwitchVisibleUsers\
Create two files named hideusers.reg
and displayusers.reg
. These two files defines which users to hide/display at logon screen, edit contents to correspond your configuration.
Contents of hideusers.reg
:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"Administrator"=dword:00000000
"ChuckNorris"=dword:00000000
"JonSkeet"=dword:00000000
And contents of displayusers.reg
:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"Administrator"=dword:00000001
"ChuckNorris"=dword:00000001
"JonSkeet"=dword:00000001
Now, you're done. How to test it?
Just logout or switch user if fast user switching is enabled and when you are at logon screen try to use accessibility options (small button at left bottom corner). If Administrator, Chuck Norris or Jon Skeet is nearby, they will appear and disappear while you are clicking this magic button.
Yes, I can't find a way to enable that feature either. If you know how, please share :) – Rauffle – 2012-05-10T21:19:00.597
2I've mainly using Linux after leaving ms server setups behind but I know that this is possible and will check if I could dig it up from my old WS install scripts... Am I right that forcing ctrl+alt+del for every user is not acceptable? Because this would be easy by modifying security policies from control panel. – Sampo Sarrala - codidact.org – 2012-05-10T21:25:11.147
Unfortunately forcing everyone to have to log in with a username/password isn't acceptable. The staff mostly 'need' to be able to click their icon, type in a password, and be on their way. I know I've seen Win7 machines set up in such a way before that you could click your login, or you could manually enter in your information (ie. to login as a domain user, hidden account, etc) but I'm having no luck finding out how to do so. – Rauffle – 2012-05-10T21:30:31.113
Whenever I enable the hidden admin account in W7 it shows up on the login screen with the other user accounts. – Moab – 2012-05-10T22:12:58.127
@Moab: I'm not referring to the hidden admin account in Win7, instead I have an Administrator account that I created and hid so it wouldn't show up in the login screen with other user accounts. – Rauffle – 2012-05-10T22:18:59.680
Okay, did not find real solution but however if you are interested I've managed to find workaround which however (at this point of development) needs tweaking of logon screen and forced killing (to reload modified registry settings) of
LogonUI.exe
. Basically it will show/hide some specified accounts at basic logon screen interactively. – Sampo Sarrala - codidact.org – 2012-05-10T23:38:44.477Sure, let's hear it. Sounds interesting enough at least – Rauffle – 2012-05-10T23:41:21.417
Now I have tested my sketch and found bug from first rev., see comments. Also see revisions.
– Sampo Sarrala - codidact.org – 2012-05-11T21:57:30.123