C# 如何限制对windows中某些程序的访问?

C# 如何限制对windows中某些程序的访问?,c#,windows,time-management,C#,Windows,Time Management,我正在用C#创建一个时间管理软件。我如何确保当某人前一天没有输入时间记录时,当他/她登录到windows时,对系统的访问受到限制 例如,阻止Internet或阻止pc如果您在使用Active Directory的域上,您可以锁定他们的帐户,这将阻止他们登录计算机。如果您在使用Active Directory的域上,您可以锁定他们的帐户,这将阻止他们登录计算机。如果您在使用Active Directory的域您可以锁定他们的帐户,这将使他们无法登录计算机。如果您在使用Active Director

我正在用C#创建一个时间管理软件。我如何确保当某人前一天没有输入时间记录时,当他/她登录到windows时,对系统的访问受到限制


例如,阻止Internet或阻止pc如果您在使用Active Directory的域上,您可以锁定他们的帐户,这将阻止他们登录计算机。

如果您在使用Active Directory的域上,您可以锁定他们的帐户,这将阻止他们登录计算机。

如果您在使用Active Directory的域您可以锁定他们的帐户,这将使他们无法登录计算机。

如果您在使用Active Directory的域中,您可以锁定他们的帐户,这将使他们无法登录计算机。

有多种方法可以导致功能降低,具有不同的复杂性和功能级别

代理 在我看来,最简单的“干净”解决方案是编写一个在本地计算机上运行并充当HTTP代理的服务。本地浏览器被配置为使用代理,根据您的要求,您将返回一个静态页面,说明用户应输入punchs以继续

用户可以通过重新配置代理设置或使用系统默认设置以外的浏览器绕过代理。大多数IT部门都可以通过集团策略克服这两个问题

相关的:

复杂性:中度风险:中度Eww因素:疗效:中度

单独监禁 与屏幕保护程序的方式大致相同,您可以创建一个辅助桌面,并在隔离的桌面上显示自己的窗口。收集完所需信息后,切换回默认桌面,并销毁您创建的桌面

相关:

复杂性:中度风险:Eww因素:疗效:

不,不,不可能 如果我们想要易于实现,也许最简单的方法就是简单地将
WM_CLOSE
发送到任何我们不喜欢打开的新进程。您可以使用检查新窗口,然后调用
Process.CloseMainWindow
,如果您发现它是一个您不喜欢的进程

同时,用户可以通过快速阅读或通过打开模式对话框或其他方式阻止窗口消息的发送来四处走动。如果您不喜欢的应用程序询问用户是否要关闭,这种方法有些中性

复杂性:风险:中等Eww因素:功效:

替换外壳 如果为位于
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
的名为
Shell
REG\u SZ
指定一个备用值,则可以使程序代替
浏览器运行。然后,您可以检查用户是淘气还是友好,然后有条件地启动
explorer

用户仍然可以通过使用任务管理器或其他方式自己启动
explorer
来绕过您的应用程序

复杂性:风险:Eww因素:中等疗效:中等

SRP或AppLocker 组策略提供了两种方法来限制在PC上运行的软件:。两者都有各自的优点,在试图控制的方面也有很大的不同。您可以通过检查
admx
文件,使用
HKCU\Software\policies
键或使用已建立的API,以编程方式创建策略

组策略只有在刷新发生后才有效,通常是在登录时,因此在清除状态后,您必须注销

相关的:

复杂性:中度风险:Eww因素:疗效:

登录用户界面 您可以使用自定义登录UI来阻止用户在未提交小时数的情况下登录。这似乎有点严厉,但嘿,这是你的特权。GINA在Vista中被一个新的架构取代了,但确实有。您将在非托管代码中工作

如果用户可以通过其他方式登录(例如,生物识别或智能卡),他们可能看不到您的对话框

复杂性:风险:Eww因素:功效:

活动目录 如果您在域中工作,也可以通过ADSI或LDAP禁用用户帐户。然而,在合理的时间表内,这样做可能是不可逆的,并且在许多安装中,由于与其他系统的集成,这是非常不可取的(想到门禁控制器……没有时间卡=无法进入建筑物)

此外,由于较大域中的传播延迟,任何更改可能需要几分钟或几小时,直到用户受到影响


复杂度:风险:Eww因素:功效:低有多种方法可导致功能降低,复杂度和功能水平各不相同

代理 在我看来,最简单的“干净”解决方案是编写一个在本地计算机上运行并充当HTTP代理的服务。本地浏览器被配置为使用代理,根据您的要求,您将返回一个静态页面,说明用户应输入punchs以继续

用户可以通过重新配置代理设置或使用系统默认设置以外的浏览器绕过代理。这两个问题都可以克服