我们正在开发一个C#.NET窗口服务。模拟用户
我们的服务正在系统帐户下运行,我们正试图模拟登录的用户USER。 模拟工作正常,即在模拟后调用System.Security.Principal.WindowsIdentity.GetCurrent()
时,我们得到正确的用户'USER'。
问题是,当我们尝试访问用户配置文件时,我们没有得到预期的结果。 一个例子是访问注册表CURRENT_USER。我们得到一个访问被拒绝的错误。 使用我们假设部分使用注册表的第三方功能时,我们会获取“真实”(模拟前)用户的详细信息。 此外,在拨打Environment.ExpandEnvironmentVariables("%TEMP%")
时,我们将获取系统配置文件,而不是登录的用户配置文件。
有没有办法完全模仿不同的用户? 我知道我们可以使用LoadUserProfile来获取特定的用户配置文件,但这对我们并不好,因为我们正在运行使用当前用户配置文件的第三方dll。
我们的模拟代码在this
首先,你应该使用System.IO.Path.GetTempPath();如果仍然不起作用,这可能是你的问题:http://stackoverflow.com/questions/944483/how-to-get-temporary-folder-for-current-user看到接受的答案,以及它是如何工作的。 – lahsrah
让我更具体。我们正在使用对我们无法更改的第三方dll的调用。所以如果他们预计特定的用户配置文件,我们必须使该进程与该用户配置文件一起运行。 – user844541
@ user844541请再次阅读我的链接。 – lahsrah