提问人:akeel 提问时间:2/27/2014 更新时间:2/27/2014 访问量:1877
如何限制对 Windows 中某些程序的访问?
how can i restrict access to certain programs in windows?
问:
我正在用 C# 创建一个时间管理软件。我怎样才能确保当某人在前一天没有输入时间记录时,当他/她登录 Windows 时对系统的访问受到限制?
例如,阻止Internet或阻止PC
答:
如果您在使用 Active Directory 的域中,您可以锁定他们的帐户,这将使他们无法登录计算机。
评论
有多种方法可能导致功能减少,具有不同程度的复杂性和功能。
代理
在我看来,最简单的“干净”解决方案是编写一个在本地计算机上运行的服务,并充当 HTTP 代理。本地浏览器被配置为使用代理,在您的要求下,您返回一个静态页面,说明用户应该输入拳头才能继续。
用户可以通过重新配置代理设置或使用系统默认浏览器以外的浏览器来绕过代理。大多数 IT 部门都可以通过组策略克服这两个问题。
相关新闻: .Net 的开源代理库
复杂度:中等 风险:中度 Eww 因子:低 功效:中等
单独监禁
与屏幕保护程序大致相同,您可以创建辅助桌面并在独立桌面上显示自己的窗口。收集所需信息后,切换回默认桌面,并销毁您创建的桌面。
相关新闻: 桌面切换 - CodeProject, 碎片整理工具 - 桌面
复杂度:中等 风险:低 Eww 因子:低 功效:高
不,不,不能有
如果我们要简化实现,也许最简单的做法就是简单地发送到任何我们不喜欢的新流程。可以使用 WindowOpenedEvent
检查新窗口,如果发现这是一个你不喜欢的进程,则调用它。WM_CLOSE
Process.CloseMainWindow
同时,用户可以通过快速阅读来四处走动,或者通过打开模式对话框或其他方式来防止窗口消息的抽取。如果您不喜欢的应用程序询问用户是否要关闭,则此方法在某种程度上是阉割的。
复杂度:低 风险:中等 Eww 因子:高 功效:低
替换外壳
如果为位于 的命名指定替代值,则可以使程序代替 运行。然后,您可以检查用户是顽皮还是善良,然后有条件地启动。REG_SZ
Shell
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
explorer
explorer
用户仍然可以通过使用任务管理器或其他方式启动自己来绕过您的应用程序。explorer
复杂度:低 风险:高 Eww 因子:中等 功效:中等
SRP 或 AppLocker
组策略提供了两种方法来限制在电脑上运行的软件:软件限制策略和 AppLocker。两者都有其优点,并且在他们试图控制的东西上都非常不同。可以通过检查文件或使用已建立的 API 以编程方式创建使用密钥的策略。HKCU\Software\Policies
admx
组策略仅在刷新发生后生效,刷新通常是在登录时,因此在清除状态后,必须注销。
相关新闻: 如何以编程方式修改本地组策略设置
复杂度:中等 风险:高 Eww 因子:高 功效:高
登录 UI
您可以使用自定义登录 UI 来阻止用户在未提交小时数时登录。这似乎有点沉重,但嘿,这是你的特权。GINA 在 Vista 中被替换为新的体系结构,但 MSDN 上有一个很好的示例。您将使用非托管代码来执行此操作。
如果用户可以通过其他方式(例如生物识别或智能卡)登录,则他们可能不会看到您的对话框。
复杂度:高 风险:低 Eww 因子:低 功效:高
活动目录
如果您在域中工作,也可以通过 ADSI 或 LDAP 禁用用户帐户。然而,在合理的时间表内,这样做可能是不可逆的,并且在许多安装中,由于与其他系统的集成,这是非常不可取的(门禁控制器浮现在脑海中......没有考勤卡 = 无法进入建筑物)。
此外,由于较大域中的传播延迟,任何更改都可能需要几分钟或几小时才能使用户受到影响。
复杂度:低 风险:高 Eww 因子:高 功效:低
上一个:告诉子弹过去发生了一些事情
下一个:按时间动态排序任务列表
评论