2015-10-16 1 views
-2

Я разрабатывает VCL Form ApplicationКак предотвратить использование ничего, кроме применения в Delphi XE

Когда приложение, запущенное

мне нужно предотвратитьпользователя компьютера, чтобы сделать ничего

Он не может закрыть приложение, ALT + F4 или CTRL + ALT + DEL

Он не может изменения в другое окно с помощью ALT + Tab

Он не может Перейти на рабочий стол, нажав Windows + D

Это будет использоваться в Cyber ​​Cafe и это сервер/Client ПРИМЕНЕНИЕ п

поэтому перед администратором на сервере, давая доступ к клиенту, он ничего не может сделать в компьютере .. только полный экрана для моей формы

+6

Используйте режим OS киоска –

+0

нормально, я собираюсь проверить об этом благодаря – SystemDZ

+0

Google в режиме киоска https://www.google.dk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=windows%20kiosk%20mode –

ответ

1

Потому что это Войти систему Windows, что ловушки комбинация CTRL-ALT-DEL (и поэтому она недоступна для пользовательских приложений), вам нужно будет изменить карту scancode клавиатуры клавиатуры, чтобы игнорировать хотя бы один из этих ключей.

Прежде всего, вы должны обеспечить Autologon на своем компьютере, иначе вы можете войти в систему. Это также можно сделать в реестре.

Тогда сложная часть редактирует карту scancode. В MSDN вы найдете статью о том, как сделать: https://msdn.microsoft.com/en-us/library/windows/hardware/jj128267%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

Я нашел этот рег файл, предполагают, чтобы отключить CTRL + ALT + DELETE но нету тестировал

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] 
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,38,00,00,00,38,e0,\ 
    00,00,00,00 

Be осознавая, что это чрезвычайно hirisk. Оба используют REG-файл и изменяют карту scancode. Я предлагаю вам протестировать свои вещи на виртуальной машине.

Вам также необходимо запретить пользователю отключать компьютер. Который также делается в реестре:

User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ 
Explorer] 
System Key: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\ 
Explorer] 
Value Name: NoClose 
Data Type: REG_DWORD (DWORD Value) 
Value Data: (0 = shutdown enabled, 1 = shutdown disabled) 

Так Симметричный для shuttingdown компьютера вашего probram должен сделать вызов ShutdownwindowsEx

function ExitWindows(iFlags: Integer): Boolean; 
var 
    osVerInfo: TOSVersionInfo; 

    function SetPrivilege(sPrivilegeName: string; bEnabled: Boolean): Boolean; 
    var 
    TPPrev, TP: TTokenPrivileges; 
    Token: THandle; 
    dwRetLen: DWord; 
    begin 
    Result := False; 
    OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token); 
    TP.PrivilegeCount := 1; 
    if (LookupPrivilegeValue(nil, PChar(sPrivilegeName), TP.Privileges[0].LUID)) then 
    begin 
     if (bEnabled) then 
     TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED 
     else 
     TP.Privileges[0].Attributes := 0; 
     dwRetLen := 0; 
     Result := AdjustTokenPrivileges(Token, False, TP, sizeof(TPPrev), TPPrev, dwRetLen); 
    end; 
    CloseHandle(Token); 
    end; 

begin 
    Result := True; 
    osVerInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo); 
    if GetVersionEx(osVerInfo) then 
    case osVerInfo.dwPlatformId of 
     VER_PLATFORM_WIN32_WINDOWS: 
     if not ExitWindowsEx(iFlags, 0) then 
      Result := False; // handle errors... 
     VER_PLATFORM_WIN32_NT: 
     if SetPrivilege('SeShutdownPrivilege', True) then 
     begin 
      if not ExitWindowsEx(iFlags, 0) then 
      Result := False; // handle errors... 
      SetPrivilege('SeShutdownPrivilege', False) 
     end 
     else 
      Result := False; // handle errors... 
    else 
     Result := False; 
    end; 
end; 
Смежные вопросы