System Abriegeln

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

System Abriegeln

Beitrag 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
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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()
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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) 
; 
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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!
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Antworten