(EDIT - Maybe this should be in GUI programming??)
I am starting a project whereby I want to create a protected frontend GUI which restricts a user from tampering with the Windows installation.
For me, its far too easy for a casual user to accidently screw around with the setup. Renaming, deleting, moving icons, deleting stuff from folders, messing up the display, installing spyware freebie stuff, etc..
I really want to crack down hard and set major limitations in place.
My idea is to create a protected frontend display much like you see in a Kiosk. Something which still lets the user click icons, open utilities, and the likes but prevents them from tampering with the O/S itself. Basically, a sandboxed system.
So, I need to:
1) Stop the user Alt-Tabbing into the O/S
2) Kill all system keys such as Ctrl+Alt,Del, the Windows key, menu key, sticky keys.
3) Kill all popup alerts ("Updates ready", "Virus database out of date")
4) Allow only selected drives/folders to be viewable from applications like Notepad, MSPaint
5) Hide the windows taskbar (if 'Always on top' is selected)
Just to give you a taster here is a 'very basic' frontend GUI
My idea is to add a "Admin" mode which allows the complete control of what is accessible to the user, as well as a quit option to return back to Windows.
Task too big?
I am starting a project whereby I want to create a protected frontend GUI which restricts a user from tampering with the Windows installation.
For me, its far too easy for a casual user to accidently screw around with the setup. Renaming, deleting, moving icons, deleting stuff from folders, messing up the display, installing spyware freebie stuff, etc..
I really want to crack down hard and set major limitations in place.
My idea is to create a protected frontend display much like you see in a Kiosk. Something which still lets the user click icons, open utilities, and the likes but prevents them from tampering with the O/S itself. Basically, a sandboxed system.
So, I need to:
1) Stop the user Alt-Tabbing into the O/S
2) Kill all system keys such as Ctrl+Alt,Del, the Windows key, menu key, sticky keys.
3) Kill all popup alerts ("Updates ready", "Virus database out of date")
4) Allow only selected drives/folders to be viewable from applications like Notepad, MSPaint
5) Hide the windows taskbar (if 'Always on top' is selected)
Just to give you a taster here is a 'very basic' frontend GUI
SuperStrict Framework BRL.Win32MaxGUI AppTitle="ProtectedGUI" Global dt:TGadget=Desktop() Global dtW%=dt.Width Global dtH%=dt.Height Global taskbarH%=52 Global panW%=140 Global time$=CurrentTime$() Global mb% Global win:TGadget=CreateWindow("Test",0,-18,dtW,dtH+18,Desktop(),EVENT_WINDOWACTIVATE) Global displaypanel:TGadget=CreatePanel(0,0,win.Width,win.Height-taskbarH,win,PANEL_ACTIVE) Global taskbarpanel:TGadget=CreatePanel(0,displaypanel.Height,win.Width,taskbarH-18,win,PANEL_ACTIVE) Global btn_Menu:TGadget=CreateButton("Menu",4,4,56,taskbarpanel.Height-8,taskbarpanel) Global taskbarinfo:TGadget=CreatePanel(win.Width-panW-4,4,panW,taskbarpanel.Height-8,taskbarpanel,PANEL_BORDER) Global lbl_Time:TGadget=CreateLabel("",taskbarinfo.Width-38,4,38,taskbarinfo.Height-8,taskbarinfo) SetPanelColor displaypanel,$22,$44,$aa SetGadgetText lbl_Time,time[0..time.Length-3] Global popupmenu:TGadget=CreateMenu(AppTitle,000,Null) CreateMenu("Preferences",101,popupmenu) CreateMenu("",000,popupmenu) CreateMenu("Switch User",102,popupmenu) CreateMenu("Exit",103,popupmenu) Global debugwindow:TGadget=CreateListBox(10,10,400,142,displaypanel) Repeat Local s$ 'Debug CurrentEvent.ToString() Select WaitEvent() Case EVENT_MOUSEMOVE Case EVENT_MOUSEDOWN mb=EventData() If EventSource()=displaypanel s$="Display" If EventSource()=taskbarpanel s$="TaskBar" Debug s$+" > Mouse Button = "+String(mb) Case EVENT_GADGETACTION Select EventSource() Case btn_Menu MoveMouse taskbarpanel.XPos+4 , taskbarpanel.YPos PopupWindowMenu win,popupmenu End Select Case EVENT_MENUACTION Debug "Menu > "+EventData() If EventData()=103 Exit End Select Forever End Function Debug(txt$) If CountGadgetItems(debugwindow)>8 ClearGadgetItems debugwindow If txt$<>"" AddGadgetItem debugwindow,txt$ SelectGadgetItem debugwindow,CountGadgetItems(debugwindow)-1 EndIf End Function
My idea is to add a "Admin" mode which allows the complete control of what is accessible to the user, as well as a quit option to return back to Windows.
Task too big?