我正在用C#创建一个时间管理软件。我如何确保当前一天有人没有输入时间记录时,当他/她登录到Windows时,系统访问受到限制?我如何限制在Windows中访问某些程序?
Ex。阻止互联网或阻止个人电脑
我正在用C#创建一个时间管理软件。我如何确保当前一天有人没有输入时间记录时,当他/她登录到Windows时,系统访问受到限制?我如何限制在Windows中访问某些程序?
Ex。阻止互联网或阻止个人电脑
如果您使用的是Active Directory的域名,则可以锁定他们的帐户,以免他们无法登录到计算机。
有多种方式可以导致功能降低,并具有不同级别的复杂性和功能。
最简单的“干净”的解决方案,在我看来,是写它运行在本地计算机上的服务,并作为HTTP代理。本地浏览器被配置为使用代理,并且在您的请求下,您返回一个静态页面,表示用户应该输入拳头以继续。
用户可以通过重新配置代理设置或使用非系统默认的浏览器来绕过代理。大多数IT部门都可以通过组策略来克服这两个问题。
相关:Open Source Proxy Library for .Net
复杂性:适度 风险:适度 好恶因素:低 功效:适度
与屏保相同,您可以创建辅助桌面并在隔离的桌面上显示自己的窗口。收集完所需信息后,切换回默认桌面,然后销毁您创建的桌面。
相关:Desktop Switching - CodeProject,Defrag Tools - Desktops
复杂性:适度 风险:低 好恶因素:低 功效:高
如果我们打算轻松实施,也许最简单的做法是将WM_CLOSE
发送到我们不喜欢的任何新进程打开。您可以使用WindowOpenedEvent
来检查新窗口,如果您发现它是您不喜欢的进程,请致电Process.CloseMainWindow
。
与此同时,用户可以通过非常快速地阅读,或通过打开模式对话框或其他方式防止窗口消息被抽取来避开。如果你不喜欢的应用程序询问用户是否想要关闭,这种方法有点中性。
复杂性:低 风险:适中 好恶因子:高 功效:低
如果指定的替代值为REG_SZ
na med Shell
位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
,您可以使您的程序运行代替explorer
。然后,您可以检查用户是否调皮或好看,然后有条件地启动explorer
。
用户仍然可以通过使用任务管理器或其他方式自己启动explorer
来绕过应用程序。
复杂性:低 风险:高 好恶因素:适度 功效:适度
组策略提供了两种方法限制什么软件获得在PC上运行:Software Restriction Policies and AppLocker。两者都有其优点,并且在他们试图控制的方面都有很大的不同。通过检查admx
文件或使用已建立的API,可以以编程方式创建使用HKCU\Software\Policies
密钥的策略。
组策略仅在发生刷新(通常在登录时)后生效,因此在清除状态之后,您必须注销。
相关:How to modify local group policy setting programatically
复杂性:适度 风险:高 好恶因素:高 功效:高
您可以使用自定义登录界面来防止用户在未提交小时的情况下甚至无法登录。这似乎有点沉重,但嘿,那是你的特权。 GINA在Vista中被新架构取代,但有an excellent sample available on MSDN。你将在这个非托管代码中工作。
如果用户可以通过其他方式(例如生物识别卡或智能卡)登录,他们可能看不到您的对话框。
复杂性:高 风险:低 好恶因素:低 功效:高
如果你在一个工作域,你也可以禁用用户的帐户通过ADSI或LDAP。然而,这样做在合理的时间表内可能是不可逆的,并且由于与其他系统的集成(门禁控制器浮现在脑海......没有时间卡=无法进入建筑物),在许多装置中是非常不可取的。
此外,由于较大域中的传播延迟,任何更改可能需要几分钟或几小时,直到用户受到影响。
复杂性:低 风险:高 好恶因素:高 功效:低
非常感谢您的详细回复。这真的帮助了我 – akeel
对不起,我不明白你的答案和我的工作本地网络 – akeel
组织倾向于将Windows计算机归入“域”,而域中的账户/计算机/组由一个名为“Act一个目录“。您可以在此应用程序中设置策略来限制用户访问。如果这是你的家,那么你可能没有这种设置,但这种设置对于一家公司来说是正常的,所以如果你正在构建代码出售给公司,你应该走这条路。 – vesuvious
有帮助。不明白我能用Active Directory做什么。谢谢 – akeel