Where are .NET User Settings stored IF User = SYST

2019-04-20 08:32发布

问题:

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?

回答1:

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.)



回答2:

Since I don't know the answer, I would do the following to figure out:

  1. Install SysInternals Process Monitor (Direct download).
  2. Start Process Monitor, set the filter Path to your application's name.
  3. Start your application.
  4. Watch the locations inside Process Monitor.

This helped me often in the past, maybe it could be something for you, too?



回答3:

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.