我希望跟踪远程机器上某些应用程序的运行状态,其中不包括system
或idle
等系统应用程序。
我使用System.Diagnostics.Process
类和GetProcessesByName(string processname, string systemID)
为此目的。
当我尝试在远程机器上这样做时,我得到一个错误说'Access Denied'。
研究了一下,似乎有几个原因,比如应用程序/服务在哪个用户下运行。
我已经尝试提升用户,我的服务(跟踪应用程序)将在其帐户下运行,但它似乎没有工作。
该操作需要哪些用户权限?它们应该应用在哪里?如果远程机器上没有相同的用户,这样做是否有效?
要远程访问计算机,您应该具有target
计算机的权限/权利,否则这将是一个巨大的安全漏洞。
因此,要么在那里添加您的帐户,要么使用目标计算机上存在的用户凭据。
经过一番挖掘:
源如果当前用户没有对远程计算机的适当访问权限,则对 regconnecregistry 的调用失败。要连接到远程注册表,在调用regconnecregistry之前,使用LOGON32_LOGON_NEW_CREDENTIALS和ImpersonateLoggedOnUser调用LogonUser。