动态创建用户并使用 DPAPI

Creating User Dynamically And Using DPAPI

对于某些项目,我需要:

  1. 动态创建本地用户帐户(为此我使用 .NET 框架中的 UserPrincipal class)

  2. 模拟那个用户(我写了一些 classes 调用本地 LogonUser (advapi32.dll)

  3. 使用DPAPI加密部分用户数据。我还有一些 classes 调用本机 CryptProtectData 和 CryptUnprotectData (crypt32.dll)

这里的问题是,当动态创建用户时,不会创建用户特定的文件夹,即使我调用 LogonUser 也是如此。

由于 DPAPI 将查找这些文件夹,而文件夹不存在,因此调用将失败。

现在,如果我手动执行用户登录,就会创建这些文件夹,之后一切都很好。但是,我需要一种无需手动登录即可自动创建这些文件夹的方法。

有办法吗?

我发现 userenv.dll 中有函数 LoadUserProfile。 这就是我要找的。

现在,一切正常。