我们正在开发一个 C# .NET windows 服务。
我们的服务在系统帐户下运行,我们正在尝试模拟登录用户 USER。模拟工作正常,即在System.Security.Principal.WindowsIdentity.GetCurrent()
模拟后调用时,我们得到正确的用户'USER'。
问题是当我们尝试访问用户配置文件时,我们没有得到预期的结果。一个示例是访问注册表 CURRENT_USER。我们收到拒绝访问错误。当使用第三方功能时,我们假设它部分使用了注册表,我们获得了“真实”(在模拟之前)用户的详细信息。此外,在调用时,Environment.ExpandEnvironmentVariables("%TEMP%")
我们会获取系统配置文件而不是登录的用户配置文件。
有没有办法完全模仿不同的用户?我知道我们可以使用 LoadUserProfile 来获取特定的用户配置文件,但这对我们不利,因为我们正在运行使用当前用户配置文件的第三方 dll。
我们的模拟代码就是基于此