Мне удалось это сделать.
Я сделал LogonUser, LoadUserProfile и ImpersonateLoggedOnuser. LoadUserProfile вернет структуру PROFILEINFO. Член hProfile в PROFILEINFO - это фактический корень HKCU, который следует использовать.
Вызов LogonUser будет рекурсивно запускать провайдера сети, чтобы заблокировать необходимость проверки lpStationName из аргумента NPLogonNotify, если его «SvcVtl» затем прервет рекурсию. Ищите документ msdn для более подробной информации о NPLogonNotify.
когда все операции с реестром завершены, вызовите UnLoadUserProfile, RevertoToSelf, closeHandle (токен)