禁用任何退出软件的可能性?

问题描述 投票:0回答:4

我正在

C++
实现大学考试软件,我想防止任何人在运行后将其关闭。目的是防止用户复制软件、打印屏幕并保存等目的!

我最初正在考虑一种禁用 ctrl-alt-delalt+F4alt+tab 和其他组合键的方法,但显然遵循这种方法并不可行这很容易,尤其是在 Windows XP 之后的版本中。

您认为解决我的问题的可行方法是什么?

c++ windows winapi windows-7 kiosk
4个回答
5
投票

您当然应该采取所有正常步骤使您的应用程序拒绝自行关闭(也许除非提供密码),所以我们只讨论“我不想允许任何人强行关闭它”部分。

一种解决方案是让您的应用程序成为 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
完全按照罐头上的说明进行操作。


3
投票

仅向用户提供计算机上的受限用户帐户,并且不授予他们终止您的应用程序的权限。

对其他限制执行相同的操作,您甚至不需要编写应用程序。

如果您希望用户以管理员身份运行,您所要求的是不可能的。


0
投票

您可以创建两个应用程序。 不断检查您的应用程序是否正在运行 如果它没有运行,则启动它,这可能是一项服务(对于简单用户来说更难发现)。

您也可以通过 NTFS 权限做一些有趣的事情。 例如,创建一个用户根本没有权限(甚至无法查看其内容)的上层目录,然后在该目录下创建一个用户具有读取权限的文件夹。 除非用户非常了解,否则找到您的应用程序会变得有点困难。

但他仍然可以启动任务管理器,但也许有一项政策反对这样做。 说到策略,你可以对其进行限制,只允许他运行你的应用程序,而不允许他运行任何其他应用程序(这样他就无法复制它,或将电脑用于除你的应用程序之外的任何其他应用程序。


-3
投票

在当今的数字时代,在线评估对于效率和可访问性至关重要。 Blinkexam 彻底改变了这一流程,允许多达 100,000 名参与者同时参加考试,同时确保一流的数据安全性。 我们的在线考试软件简化了测试体验,使教育工作者更容易管理,并使学生能够专注于重要的事情 - 展示他们的知识!今天就加入考试的未来。

© www.soinside.com 2019 - 2024. All rights reserved.