4

我需要创建一个可以在 Windows 8 上全屏运行并且用户不能轻易退出的应用程序。

由于该应用程序将在只有触觉输入的计算机或平板电脑上运行,因此我将创建一个无铬和最顶层的 WPF 应用程序,该应用程序只有在连接键盘时才能关闭。

问题是左侧的应用程序切换栏和右侧的超级按钮栏仍然可以在没有键盘的情况下打开,并且允许用户退出应用程序。这可以从代码中禁用吗?我似乎找不到方法。

简单的解决方案是在另一个操作系统上运行,但机器将运行 Windows 8,对此我无能为力。

4

7 回答 7

1

我挖出了一个 .TXT,其中包含我前段时间在网上某处找到的一些注释,它可能会有所帮助(最坏的情况,它不适用于 Windows 8 并且不起作用。不幸的是我无法引用它的来源,我真的不记得它来自哪里):

自 XP 以来已经存在“信息亭模式”。通常它的目的是锁定 IE 以显示一些交互式网页而不让用户关闭它:它被称为强制用户配置文件。

要设置它:

  1. 以您想要的方式设置帐户。设置组策略,设置启动程序 用户必须是标准用户,而不是管理员。但是话又说回来,如果未经授权的人即使计算机“冻结”也可以获得管理员权限,我认为您会遇到更严重的问题。
  2. 以管理员身份登录,然后计算机属性>高级>用户配置文件设置>(选择该配置文件)>(将其复制到任何地方)>将“允许使用”设置为所有人
  3. 转到该文件夹​​属性>安全>(更改它,以便每个人都可以读取和修改,但不能写入,确保您适用于里面的所有内容)
  4. 将 NTUSER.DAT 重命名为 NTUSER.MAN
  5. 打开计算机管理>本地用户和组>用户>(创建新用户)>(打开新创建的用户)>配置文件>(在配置文件路径上,将其设置为该文件夹)
  6. 禁用您刚刚复制的用户(因为您不希望人们登录到那里)

完成并登录新帐户后,您会发现它的性能几乎与您一直在寻找的信息亭模式一样。要撤消更改,请注销并重新登录。

于 2012-08-06T09:23:51.000 回答
0

我遇到了完全相同的问题,并且形成了我所知道的,除非您使用自制的 rootkit 来禁用 Charms Bar,否则无法做到这一点。这就是我在考虑了所有其他选项后一直采用的方式。

为了节省您一些时间,这里是行不通的。

  • 经典壳牌。
  • 开始菜单套件。
  • EdgeUI 的注册表编辑。
  • 通过右键单击开始菜单禁用 - 尽管您应该这样做以禁用其他功能。

这里有一些可能有效的选项,虽然不是很漂亮。查看以下内容:

  • 侧载应用程序
  • 重新创建 Windows 应用商店应用
  • Rootkit

否则,你无能为力。我很想听听你是如何解决这个问题的。

查看我提出的类似问题:Windows 8 中的 Kiosks Running Regular Software (Non-Windows Store App)

于 2014-09-03T20:17:50.367 回答
0

explorer.exe当您的应用程序启动并且魅力栏不起作用时终止。

于 2015-06-27T08:33:58.080 回答
0

这一年是 2018 年,Window 10 几乎完全推出了 Windows 8。Win8 的“热角”在 Win10 中再次变冷——它们显然取得了巨大的成功。但是,如果您仍然需要在 Win8.x/Win2012 中禁用它们并最终在这里寻找解决方案(就像我所做的那样),这就是我解决它的方法。我意识到如果全屏应用程序处于活动状态并覆盖任务栏,Windows 会自动禁用它们。由于我的应用程序是基于对话框的而不是全屏的,因此我创建了一个透明窗口(光学透明且输入透明)并将其设置为我的对话框的父窗口。现在这个不可见的窗口覆盖了整个屏幕-> 热角被禁用。

像这样的东西(简化):

int nVirtualScreenLeft   = GetSystemMetrics (SM_XVIRTUALSCREEN);
int nVirtualScreenTop    = GetSystemMetrics (SM_YVIRTUALSCREEN);
int nVirtualScreenWidth  = GetSystemMetrics (SM_CXVIRTUALSCREEN);
int nVirtualScreenHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN);

HWND hwndFullScreenInvisible = CreateWindowEx(
    WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW,
    _T("Static"), strWindowCaption,
    WS_VISIBLE | WS_POPUP,
    nVirtualScreenLeft, nVirtualScreenTop, nVirtualScreenWidth, nVirtualScreenHeight,
    HWND_DESKTOP, NULL, NULL, NULL);

if (hwndFullScreenInvisible != NULL)
{
    BOOL bRet = SetLayeredWindowAttributes (hwndFullScreenInvisible, /*COLORREF = */ 0, /* byAlpha = */ 0, LWA_ALPHA);
}

CMyDlg dlg (CWnd::FromHandle(hwndFullScreenInvisible));
dlg.DoModal ();
于 2018-06-25T10:16:33.423 回答
0

简单的解决方案,不完美但有效,每次激活魅力栏时,您的应用程序都会停用,因此立即重新激活它,魅力栏就会消失。将此添加到您的 App.xaml.cs

DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
    public App()
    {
        this.Deactivated += App_Deactivated;
        this.Activated += App_Activated;
        timer.Tick += delegate
        {
            Application.Current.MainWindow.Activate();
        };
        timer.Interval = new TimeSpan(0, 0, 0, 0, 10);
    }

    void App_Activated(object sender, EventArgs e)
    {
        timer.Stop();
    }

    void App_Deactivated(object sender, EventArgs e)
    {
        timer.Start();
    }
于 2015-11-25T17:29:27.587 回答
0

我知道回答这个问题可能有点晚了,但希望这对其他人有帮助,在您的 Regedit 中有一个 regkey 允许您选择“Shell”窗口启动的内容,默认情况下它设置为 explorer.exe 如果您改变它它会启动到你想要的任何程序,而无需通过愚蠢的 Windows 8 开始菜单。

Regkey 在

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell

希望对大家有所帮助。

于 2015-08-11T01:28:47.020 回答
-2

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell\EdgeUI\DisableTLcorner DWORD=1

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell\EdgeUI\DisableCharmsHint DWORD=1

于 2014-01-25T04:00:31.630 回答