[英]Restrict Access To Certain File From Other Programs And Users While Running
[英]how can i restrict access to certain programs in windows?
我正在用C#创建一个时间管理软件。 我如何确保当某人没有输入前一天的时间记录时,他/她登录Windows时对系统的访问受到限制?
例如 阻止互联网或阻止电脑
导致功能降低的方法有多种,复杂性和功能性各不相同。
在我看来,最简单的“干净”解决方案是编写一个在本地计算机上运行并充当HTTP代理的服务。 本地浏览器被配置为使用代理,并且按照您的要求,您返回一个静态页面,提示用户应输入打孔以继续。
用户可以通过重新配置代理设置或使用系统默认设置以外的浏览器来绕过代理。 通过组策略,大多数IT部门都可以解决这两个问题。
相关: .Net的开源代理库
复杂性:中度风险:中度EW因子:低功效:中度
与屏幕保护程序几乎相同,您可以创建辅助桌面,并在隔离的桌面上显示自己的窗口。 收集所需信息后,请切换回默认桌面,并销毁您创建的桌面。
相关: 桌面切换-CodeProject , 碎片整理工具-桌面
复杂程度:中度风险:低Eww因素:低功效:高
如果我们要简化实现,也许最简单的事情就是将WM_CLOSE
发送到我们不喜欢的任何新进程中,该进程将打开。 您可以使用WindowOpenedEvent
检查新窗口,如果发现它是您不喜欢的进程,则调用Process.CloseMainWindow
。
同时,用户可以通过快速阅读或通过打开模式对话框或其他方式防止弹出窗口消息来解决问题。 如果您不喜欢的应用程序询问用户是否要关闭,则此方法有些绝望。
复杂度:低风险:中度EW因子:高功效:低
如果您为位于HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon
名为Shell
的REG_SZ
指定备用值,则可以使程序代替explorer
来运行。 然后,您可以检查用户是顽皮的还是友好的,然后有条件地启动explorer
。
用户仍然可以通过使用任务管理器或其他方式自行启动explorer
管理器来绕过您的应用程序。
复杂性:低风险:高EW因子:中功效:中
组策略提供了两种方法来限制在PC上运行哪些软件: 软件限制策略和AppLocker 。 两者都有其优点,而且在控制上也有很大不同。 您可以通过检查admx
文件或使用已建立的API,使用HKCU\\Software\\Policies
密钥以编程方式创建策略。
组策略仅在刷新(通常在登录时)后生效,因此清除状态后,您必须注销。
相关: 如何以编程方式修改本地组策略设置
复杂程度:中度风险:高EW因子:高功效:高
您可以使用自定义登录UI来防止用户在未提交小时数的情况下甚至登录。 这似乎有点费力,但是,这是您的特权。 GINA在Vista中被新的体系结构取代,但是MSDN上有一个很好的示例 。 您将为此代码使用非托管代码。
如果用户可以通过其他方式(例如,生物识别或智能卡)登录,则他们可能看不到您的对话框。
复杂性:高风险:低Eww因素:低功效:高
如果您在域中工作,则还可以通过ADSI或LDAP禁用用户帐户。 但是,这样做可能无法在合理的时间表内逆转,并且在许多安装中由于与其他系统的集成而非常不建议(想到门禁控制器……没有时间卡=无法进入建筑物)。
此外,由于在较大域中的传播延迟,任何更改可能需要几分钟或几小时才能影响用户。
复杂度:低风险:高EW因子:高功效:低
如果您在使用Active Directory的域中,则可以锁定他们的帐户,这将使他们无法登录计算机。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.