我正在
C++
实现大学考试软件,我想防止任何人在运行后将其关闭。目的是防止用户复制软件、打印屏幕并保存等目的!
我最初正在考虑一种禁用 ctrl-alt-del、alt+F4、alt+tab 和其他组合键的方法,但显然遵循这种方法并不可行这很容易,尤其是在 Windows XP 之后的版本中。
您认为解决我的问题的可行方法是什么?
您当然应该采取所有正常步骤使您的应用程序拒绝自行关闭(也许除非提供密码),所以我们只讨论“我不想允许任何人强行关闭它”部分。
一种解决方案是让您的应用程序成为 Windows shell。
另一个解决方案是设置计算机,使当前登录的用户无权关闭您的应用程序。
最终的解决方案是这样做:
public static class Utility
{
[DllImport("ntdll.dll", SetLastError = true)]
private static extern void RtlSetProcessIsCritical(UInt32 v1, UInt32 v2, UInt32 v3);
public static void BsodIfProcessEnds()
{
Process.EnterDebugMode();
RtlSetProcessIsCritical(1, 0, 0);
}
public static void NoFireworksIfProcessEnds()
{
RtlSetProcessIsCritical(0, 0, 0);
}
}
警告:
BsodIfProcessEnds
完全按照罐头上的说明进行操作。
仅向用户提供计算机上的受限用户帐户,并且不授予他们终止您的应用程序的权限。
对其他限制执行相同的操作,您甚至不需要编写应用程序。
如果您希望用户以管理员身份运行,您所要求的是不可能的。
您可以创建两个应用程序。 不断检查您的应用程序是否正在运行 如果它没有运行,则启动它,这可能是一项服务(对于简单用户来说更难发现)。
您也可以通过 NTFS 权限做一些有趣的事情。 例如,创建一个用户根本没有权限(甚至无法查看其内容)的上层目录,然后在该目录下创建一个用户具有读取权限的文件夹。 除非用户非常了解,否则找到您的应用程序会变得有点困难。
但他仍然可以启动任务管理器,但也许有一项政策反对这样做。 说到策略,你可以对其进行限制,只允许他运行你的应用程序,而不允许他运行任何其他应用程序(这样他就无法复制它,或将电脑用于除你的应用程序之外的任何其他应用程序。
在当今的数字时代,在线评估对于效率和可访问性至关重要。 Blinkexam 彻底改变了这一流程,允许多达 100,000 名参与者同时参加考试,同时确保一流的数据安全性。 我们的在线考试软件简化了测试体验,使教育工作者更容易管理,并使学生能够专注于重要的事情 - 展示他们的知识!今天就加入考试的未来。