【发布时间】:2011-04-03 02:11:51
【问题描述】:
我使用 C# 创建了自己的家长控制应用程序来监控我孩子的活动。它在后台静默记录所有键盘输入和屏幕,只有任务栏图标的 gui。到目前为止,我只是让它在我的管理员帐户中运行,并且每个人都共享同一个帐户并且它工作正常。问题是,随着孩子们长大,他们找到了一种从任务管理器中杀死它的方法。所以,我需要使用更复杂的方式来保护我的应用程序。我想我可以通过为每个孩子创建一个单独的标准帐户来轻松解决这个问题,并且我可以设置我的应用程序以管理员身份运行以监控他们的所有活动。但是,我遇到了很多问题。
切换到其他用户帐户后,键盘挂钩似乎停止工作。这是真的吗?我认为这是全局挂钩 - 它只是用户帐户中的全局吗?
屏幕捕获在另一个用户帐户上也不起作用。这是我的代码和
它在 g.CopyFromScreen 失败,错误为“句柄无效”:
RECT rc = Win32.GetWindowRect();
using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(rc.Width, rc.Height))
{
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
{
g.CopyFromScreen(rc.Location, System.Drawing.Point.Empty, new System.Drawing.Size(rc.Width, rc.Height));
string fileName = Settings.Instance.GetImageFileName();
bitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
}
}
非常感谢您的帮助。
【问题讨论】:
-
您已经接触到了 Windows 7 的新功能。消息过滤器和完整性级别。不过,我的问题是,您如何运行该应用程序?在他们的帐户中的管理员帐户中?在什么桌面上?它只能在同一个桌面上工作。您是否修复了桌面和窗口站 ACL 以授予对运行程序的凭据的访问权限?
-
实际上,我尝试了不同的方式来运行程序(例如,从 Windows 服务,或通过计划任务),但无法让它工作。我不熟悉你提到的Win7的新功能。对于我的测试,我只是从我的管理员帐户启动程序,然后以标准用户身份切换到孩子的帐户。
-
那行不通。服务也将不起作用(由于会话分离限制,关于 Vista)。您必须在与您要监控的帐户的 shell 相同的桌面/winsta 中运行该进程。
标签: windows-7 user-accounts keyboard-hook