I've been working with an updated to update one of my apps and using Properties.Settings.Default.Upgrade()
and discovered that after my updater restarts my app, it is run under the SYSTEM user instead of the default/logged in user.
This got me wondering, where is the user.config for SYSTEM stored?
I know where the user.config is stored normally (C:\Documents and Settings\%USERPROFILE%\Local Settings\Application Data\etc...
), but there isn't a folder in Documents and Settings
for the SYSTEM user. Does anybody know where it is or/how .NET handles this?
The Local Application Data folder for the SYSTEM account is usually located in
C:\Windows\system32\config\systemprofile\Local Settings\Application Data\
for Windows XP and
C:\Windows\system32\config\systemprofile\AppData\Local\
for later versions.
(I write usually, because
Windows does not need to be installed in C:\Windows
, and
the folder names Local Settings
and Application Data
are localized in Windows XP, and
on 64-bit versions of Windows, the folder for 32-bit applications is located underneath C:\Windows\SysWOW64
instead of System32
.)
Since I don't know the answer, I would do the following to figure out:
- Install SysInternals Process Monitor (Direct download).
- Start Process Monitor, set the filter
Path
to your application's name.
- Start your application.
- Watch the locations inside Process Monitor.
This helped me often in the past, maybe it could be something for you, too?
HKEY_USERS\.DEFAULT
is the location where a non-interactive user gets their profile from when nobody is logged in.
The registry key HKEY_CURRENT_USER is associated with the default user, not the current user. To access another user's profile, impersonate the user, then access HKEY_CURRENT_USER.