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