У меня есть приложение ASP.NET, которое я разрабатываю на компьютере с Windows 8.1 и развертываю на компьютере с Windows Server 2012R2. Это приложение запускает исполняемый файл командной строки через вызов Diagnostics.Process.Start()
. Этот исполняемый файл командной строки записывает некоторые записи по умолчанию в реестр в разделе HKEY_CURRENT_USER при первом запуске для соответствующего пользователя. Позже к ним можно получить доступ через вызовы Registry.CurrentUser.OpenSubKey()
.
При запуске веб-приложения под соответствующим пользователем ApplicationPoolIdentity в поле 8.1 оно работает отлично, а в поле WS2012 - нет. При дальнейшем расследовании выясняется, что 8.1 создает записи в разделе HKEY_USERS
для этих виртуальных учетных записей IIS, а WS2012 — нет. NetworkService, DefaultAppPool и т. д. имеют записи в реестре, а виртуальные учетные записи — нет, поэтому, если я не запускаю пул приложений под существующим пользователем в поле WS2012 (например, NetworkService), он не может записывать/читать записи реестра, поэтому он не может вытащить настройки.
Почему это? Как разрешить Windows Server 2012 создавать записи реестра для учетных записей пользователей ApplicationPoolIdentity?