C# 使用ManagementObject或GetProcess获取和模拟上下文
我希望创建一个windows服务,并能够通过获取上下文(可能通过GetProcesss函数或ManagementObject代码)来模拟登录到该框中的用户C# 使用ManagementObject或GetProcess获取和模拟上下文,c#,impersonation,C#,Impersonation,我希望创建一个windows服务,并能够通过获取上下文(可能通过GetProcesss函数或ManagementObject代码)来模拟登录到该框中的用户 我没有密码,但用户将登录到服务运行的框中。然后,将使用此上下文进行模拟。我不确定您希望按照所述执行的操作是否可行。如果没有密码,则无法模拟其他用户,除非他们是您的服务与要模拟的用户之间的某种协调 此线程具有有关如何模拟用户的良好信息: 为了模拟用户,您需要Win32用户令牌。您通常通过Win32 LogonUser获得此信息,这需要密码 但
我没有密码,但用户将登录到服务运行的框中。然后,将使用此上下文进行模拟。我不确定您希望按照所述执行的操作是否可行。如果没有密码,则无法模拟其他用户,除非他们是您的服务与要模拟的用户之间的某种协调 此线程具有有关如何模拟用户的良好信息: 为了模拟用户,您需要Win32用户令牌。您通常通过Win32 LogonUser获得此信息,这需要密码
但是,您可以通过让您想要模拟的用户使用您的服务发起请求来解决这个问题。您可以通过启动任务、手动用户操作或其他方法来执行此操作。如果你能做到这一点,你可能想考虑我们的WCF来创建您的服务。WCF允许您将服务配置为模拟进行服务调用的用户。基本上,我希望能够拥有一个可以处理10种不同内容的windows服务,这些内容需要在我们没有“密码”的上下文中运行,然而,我们有一个web服务,它可以从中返回我们想要的任何上下文,然后我们想要模拟该上下文,启动代码,然后恢复到原始上下文。这听起来好像是可行的。是windows服务调用web服务以获取上下文,还是web服务调用windows服务并向其传递上下文信息。无论哪种方式,您都应该能够通过以下方式从web服务获取进行模拟所需的信息:ServiceSecurityContext.Current.WindowsIdentity web服务将基于存储在别处的域、用户ID和密码“创建”上下文。NetworkCredential是迄今为止我发现的唯一允许我创建一些凭据的东西,我可以返回这些凭据,但我不确定在从web服务重新运行后如何将其设置为活动凭据。此线程:,具有一些代码,可用于在windows服务中模拟用户。还可以看看这里的例子:我已经使用了所有这类编码…效果很好…但是,这与我上面提到的条件不匹配。我想打电话给网络服务。让Web服务建立一个上下文(不是使用,而是创建)…返回该上下文/登录..或其他任何内容..当它返回到我的服务中时,我想用它执行命令…执行我需要执行的操作,然后放弃模拟。我已经尝试从web服务中返回safetokenhandle或模拟对象,但是当我尝试使用它时,它失败了,因为它希望在任何情况下序列化“函数”。