Seite 1 von 1

System Abriegeln

Verfasst: 22.10.2005 19:48
von 125
Hi,
Ich schreibe gerade ein Programm zum System Sperren, es funktioniert auch super nur mit Ctrl+Alt+Del kommt man immernoch in die Windows-Sicherheit und kann sich abmelden/den pc herunterfahren, nun hab ich schon öfter Anwendungen gesehen die sich über den Anmelde Screen legen können und auch sichtbar sind wenn man in der Windows-Sicherheit ist, wie geht sowas?
Schonmal THX in voraus!

mfg
125

Verfasst: 22.10.2005 20:36
von 125
Ah, ich hänge gleich noch eine Frage ran: Mein prog soll später einmal als Service laufen, wie kann ich den namen des eingeloggten Users herrausfinden? :|

mfg
125

Verfasst: 22.10.2005 21:06
von ts-soft
>> wie kann ich den namen des eingeloggten Users herrausfinden?

Code: Alles auswählen

Procedure.s GetUserName()
  Prg.s = Space(#MAX_PATH):len=#MAX_PATH
  GetUserName_( @Prg, @len)
  ProcedureReturn Prg
EndProcedure

Debug GetUserName()

Verfasst: 22.10.2005 21:09
von NicTheQuick
Ich hab hier einen Code von Danilo. Vielleicht hilft der dir weiter:

Code: Alles auswählen

; 
; by Danilo, Posted - 26 Sep 2002 :  03:14:34  (engl. forum) 
; 

; merendo, 
; 
; on winNT/2000/XP no program is allowed To 
; block the CTRL+ALT+DEL, because this would 
; be a security risc. 
; Every program could block CTRL+ALT+DEL And 
; do what it wants... And the user couldnt stop 
; it anymore. 
; 
; If you use Windows98, you can do it by telling 
; windows your app is a screensaver. 
; 
; This code disables ALT+TAB, ATL+ESC, And Windows-Keys... 
; ...also on Win2000: 



; The line " SystemParametersInfo_( #SPI_SCREENSAVERRUNNING, 1, @Dummy, 0) " 
; is For Windows 9x Systems. 
; It tells Windows that a screensaver is running, so it blocks 
; all other input on Win9x. 
SystemParametersInfo_( #SPI_SCREENSAVERRUNNING, 1, @dummy, 0); 



OpenLibrary(1,"kernel32.dll") 
CallFunction(1,"RegisterServiceProcess", GetCurrentProcessID_(), 1 ) 
  
Structure KBDLLHOOKSTRUCT 
  vkCode.l 
  scanCode.l 
  flags.l 
  Time.l 
  dwExtraInfo.l 
EndStructure 
  
Procedure.l myKeyboardHook(nCode, wParam, *P.KBDLLHOOKSTRUCT) 
  If nCode = #HC_ACTION 
    If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN Or wParam = #WM_KeyUp Or wParam = #WM_SYSKEYUP 
      #LLKHF_ALTDOWN = $20 
      If ((*P\vkCode = #VK_TAB) And (*P\flags & #LLKHF_ALTDOWN)) Or ((*P\vkCode = #VK_ESCAPE) And (*P\flags & #LLKHF_ALTDOWN)) Or ((*P\vkCode & #VK_ESCAPE) And (GetKeyState_(#VK_CONTROL) & $8000)) ;Or 
        ProcedureReturn 1 
      ElseIf (*P\vkCode = #VK_LWIN) Or (*P\vkCode = #VK_RWIN) 
        ProcedureReturn 1 
      EndIf 
    EndIf 
  EndIf 
  ;beep_(800,1) 
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
EndProcedure 
  
  
; Win NT 
#WH_KEYBOARD_LL = 13 
hook = SetWindowsHookEx_(#WH_KEYBOARD_LL,@myKeyboardHook(),GetModuleHandle_(0),0) 
;If hook = 0: End: EndIf 
  
hwnd = OpenWindow(1,10,10,100,100,#PB_Window_BorderLess,"") 
ShowWindow_(hwnd, #SW_MAXIMIZE) 
;SetWinBackgroundColor(hwnd,0) 
  
CreateGadgetList(hwnd) 
hString = StringGadget(1,GetSystemMetrics_(#SM_CXSCREEN)/2-100/2, GetSystemMetrics_(#SM_CYSCREEN)/2,100,20,"Enter Password",#PB_String_Numeric) 
  
SetFocus_(hString) 
GetWindowRect_(hString, winrect.RECT) 
       ;SetThreadPriority_(GetCurrentThread_(),#REALTIME_PRIORITY_CLASS) 
  
Repeat 
  message = WindowEvent() 
  SetActiveWindow_(hwnd) 
  SetWindowPos_(hwnd,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) 
  ClipCursor_(winrect) 
  SendMessage_(hString,#WM_KEYDOWN,#VK_END,0) 
  SetFocus_(hString) 
  If message 
    Select message 
      Case #PB_EventGadget 
        Select EventGadgetID() 
          Case 1 
            If GetGadgetText(1) = "123" 
              UnhookWindowsHookEx_(hook) 
              ClipCursor_(0) 
              SystemParametersInfo_( #SPI_SCREENSAVERRUNNING, 0, @dummy, 0); 
              End 
            EndIf 
        EndSelect 
    EndSelect 
  Else 
    Delay(1) 
  EndIf 
ForEver 

; But CTRL+ALT+DEL can on win2000 only be disabled 
; by writing a lowlevel system device driver For the keyboard. 
; Info about this should be in the MS DDK. 
; 
; Best way For you would be To install win98 
; on your disco machine... 
; 
; cya, 
; ...Danilo 
; 
; (registered PureBasic user) 
; 

Verfasst: 22.10.2005 21:13
von 125
NicTheQuick hat geschrieben:Ich hab hier einen Code von Danilo. Vielleicht hilft der dir weiter:
THX, aber den hab ich schon, leider ist der nicht CtrlAltDel sicher wenn die Wilkommenseite abgeschaltet ist die Windowsicherheit blendet den kompletten desktop aus und ihr fenster ein :|
Procedure.s GetUserName()
Prg.s = Space(#MAX_PATH):len=#MAX_PATH
GetUserName_( @Prg, @len)
ProcedureReturn Prg
EndProcedure

Debug GetUserName()
Services werden ja als SYSTEM ausgeführt :| ich brauch aber den User der an der Domain angemeldet ist :| Trotzdem THX!