My analysis in my update regarding the cookie not being returned to the server was incorrect. At some point before my logging code ran, the cookie was being expunged from the cookie collection server-side.
Using Wireshark, I determined that actually, two copies of the .ASPXAUTH
cookie were being sent to the server, one was invalid and one valid. Technically, the order of cookies is non-deterministic, so I think it was affecting people whose browsers were sending an invalid cookie first... ASP.NET just didn't consider the second, valid cookie at all.
As mentioned above, the cookie in question was .ASPXAUTH
which is the default name for .NET's authentication cookie. We believe two copies of it existed as it had perhaps been sent under a different domain in the past (once as www.mysite.com
and at a different time as .mysite.com
).
The easiest solution, which worked perfectly, was to change the name of the authentication cookie, by setting the following in Web.config
:
<authentication mode="Forms">
<forms name="SOMEOTHERCOOKIENAME" />
</authentication>
Then, just make sure that the new cookie is only ever sent with a single value which will match a given request!
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.
Best Answer
What you want is a Captive Portal, this should do the trick:
https://help.ubuntu.com/community/WifiDocs/CoovaChilli