如何使用 C++ 将 Windows 7 锁定到单个程序中?
How to lock Windows 7 into a single program with C++?
我一直在 Visual Studio 2015 (C++) 开发应用程序。这是我学校技术支持的信息亭应用程序。基本上,它是一个将 运行 放在信息亭中的支持站点。我需要弄清楚如何锁定 windows 以便它只有 运行 那个程序。 运行 全屏模式下的程序也很有帮助。请记住,所有的售货亭 运行 Windows 7.
设置注册表项
HKCU SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Shell="c:\path\to\whatever.exe"
通过 taskmgr.exe 的安全性禁止任务管理器(向二进制文件添加拒绝读取 + 拒绝执行)
设置自动登录:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
DefaultUserName = whatever
DefaultPassword = whatever
准备一张启动盘。扭转这种情况的唯一方法是启动启动盘并在安装适当的配置单元后撤消其中一个步骤。
您可以在全屏模式和弹出窗口中使用 main window 创建您的程序:
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_APPWINDOW|WS_EX_TOPMOST,
lpClsName,
"MDI Project under Visual C++ WINAPI",
WS_BORDER|WS_POPUP,
...);// add the remaining parameters
并找到 taskmgr.exe 并隐藏它和开始菜单按钮并隐藏它们:
hTaskBar = ::FindWindow ("Shell_TrayWnd", "");
hStart = ::FindWindowEx(GetDesktopWindow(), NULL, "Button", "Start");
ShowWindow(hTaskBar, SW_HIDE);
ShowWindow(hStart, SW_HIDE);
因此您的程序看起来像 easycafe 或 handycafe
我实际上是从 C++ 切换到 C#,所以我将用 C# 解释我的答案。
我使用键盘钩子库来捕获键盘输入并阻止所有 non-letter/number 输入,因此 alt-f4、alt-tab 等将无法工作。然后,我使用另一个键盘挂钩 (LWin+C+Home+F12+PrtSc) 确定了结束字符序列。
至于 Ctrl-Alt-Del,不能禁用(据我所知),因为它是一个系统功能,所以我就保持原样。
我还获得了屏幕的边界,并将 window 的大小设置为应用程序启动时的最大屏幕大小,以及每当应用程序调整大小或移动时。这实际上使应用程序覆盖了任务栏,带有关闭和最小化按钮的栏也被覆盖了,但如果有人找到了移动它的方法,它会立即恢复到完整大小。
我还设置了自动登录,正如之前的回答中所详述的那样,但我只是没有通过代码来完成。
我一直在 Visual Studio 2015 (C++) 开发应用程序。这是我学校技术支持的信息亭应用程序。基本上,它是一个将 运行 放在信息亭中的支持站点。我需要弄清楚如何锁定 windows 以便它只有 运行 那个程序。 运行 全屏模式下的程序也很有帮助。请记住,所有的售货亭 运行 Windows 7.
设置注册表项
HKCU SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Shell="c:\path\to\whatever.exe"
通过 taskmgr.exe 的安全性禁止任务管理器(向二进制文件添加拒绝读取 + 拒绝执行)
设置自动登录:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
DefaultUserName = whatever
DefaultPassword = whatever
准备一张启动盘。扭转这种情况的唯一方法是启动启动盘并在安装适当的配置单元后撤消其中一个步骤。
您可以在全屏模式和弹出窗口中使用 main window 创建您的程序:
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_APPWINDOW|WS_EX_TOPMOST,
lpClsName,
"MDI Project under Visual C++ WINAPI",
WS_BORDER|WS_POPUP,
...);// add the remaining parameters
并找到 taskmgr.exe 并隐藏它和开始菜单按钮并隐藏它们:
hTaskBar = ::FindWindow ("Shell_TrayWnd", "");
hStart = ::FindWindowEx(GetDesktopWindow(), NULL, "Button", "Start");
ShowWindow(hTaskBar, SW_HIDE);
ShowWindow(hStart, SW_HIDE);
因此您的程序看起来像 easycafe 或 handycafe
我实际上是从 C++ 切换到 C#,所以我将用 C# 解释我的答案。
我使用键盘钩子库来捕获键盘输入并阻止所有 non-letter/number 输入,因此 alt-f4、alt-tab 等将无法工作。然后,我使用另一个键盘挂钩 (LWin+C+Home+F12+PrtSc) 确定了结束字符序列。
至于 Ctrl-Alt-Del,不能禁用(据我所知),因为它是一个系统功能,所以我就保持原样。
我还获得了屏幕的边界,并将 window 的大小设置为应用程序启动时的最大屏幕大小,以及每当应用程序调整大小或移动时。这实际上使应用程序覆盖了任务栏,带有关闭和最小化按钮的栏也被覆盖了,但如果有人找到了移动它的方法,它会立即恢复到完整大小。
我还设置了自动登录,正如之前的回答中所详述的那样,但我只是没有通过代码来完成。