LoadUserProfile在不存在时不创建本地用户配置文件[C#]

Sha*_*n00 5 c#

我有一个工具,我用它以编程方式创建本地用户帐户,如下所示:

DirectoryEntry NewUser = dirEntryLocalMachine.Children.Add("UserName", "user");
NewUser.Invoke("SetPassword", new object[] { "Passsord" });
NewUser.Invoke("Put", new object[] { "Description", "Description" });
NewUser.CommitChanges();
Run Code Online (Sandbox Code Playgroud)

该帐户创建正常,但此时用户配置文件不存在(没有HKEY CURRENT USER,没有文档和设置等...),我正在对此进行一些研究,并发现以下MSDN文章说调用LoadUserProfile (...)实际上将创建配置文件,如果它不存在:
如何以编程方式导致创建用户的配置文件

所以我添加了如下代码:

IntPtr hToken = IntPtr.Zero;
bool bLogon = LogonUser(
        sName,
        sDomain,
        sPassword,
        LOGON32_LOGON_NETWORK,
        LOGON32_PROVIDER_DEFAULT,
        out hToken
        );

PROFILEINFO profileInfo = new PROFILEINFO();    
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.dwFlags = 1;
profileInfo.lpUserName = sName;
bool bLoad = LoadUserProfile(hToken, ref profileInfo);
Run Code Online (Sandbox Code Playgroud)

现在,bLogon和bLoad都是正确的,没有异常发生,一切"似乎"工作正常... profileInfo的内容没有更新(我假设字段像.lpProfilePath应该有好的值)和GetUserProfileDirectory()失败找到路径(显然 - 它不存在) - 我也手动检查,新帐户的"文件和设置"下没有任何内容.

任何人都有任何关于我做错的线索?

任何帮助将非常感激.谢谢,

Sha*_*n00 0

我假设这一切都是在管理员下完成的 - 实际上它是作为执行任务的 LocalSystem 运行的服务 - 它没有完整的管理员权限吗?如果我缺乏特权,我认为我会收到某种错误代码。

我也尝试以管理员身份运行它(以交互式用户身份登录),认为它可能与服务等有关...但结果相同 - 没有错误,但未创建配置文件。