Solved

Disable ctrl-alt del + alt-tab in XP/nt/2000

Posted on 2003-10-22
13
729 Views
Last Modified: 2010-04-05
I need a freeware component or source code to disable ctrl-alt del + alt tab + start button in XP/NT/2000
0
Comment
Question by:shaneholmes
  • 3
  • 3
  • 3
  • +3
13 Comments
 
LVL 8

Expert Comment

by:gmayo
ID: 9601023
0
 
LVL 8

Expert Comment

by:gmayo
ID: 9601080
http://www.infojet.cz/program/delphi/tips/tip0017.html for start button, not sure if XP/NT/2K though.
http://www.swissdelphicenter.ch/torry/showcode.php?id=1528 to disable Task Manager (whoa!)
http://www.swissdelphicenter.ch/torry/showcode.php?id=328 for start button, looks similar to the one above

Geoff M.
0
 
LVL 11

Author Comment

by:shaneholmes
ID: 9601542
dWinlock is Shareware

Most of the other code you presented, I believe is not for XP/NT/2000, but i'll test it ....
0
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
LVL 8

Expert Comment

by:gmayo
ID: 9602197
Try http://msdn.microsoft.com/msdnmag/issues/02/09/CQA/default.aspx , works on XP, but it's in C++

Geoff M.
0
 
LVL 6

Accepted Solution

by:
DaFox earned 500 total points
ID: 9603434
Hi,

on NT using (group) policies is the right way (instead of replacing gina.dll or the keyboard driver) to disable ctrl+alt+del.

This example shows you how to do it in Delphi:

uses Registry;

procedure RegEdit(NoChangeStartMenu, NoClose, NoLogOff, DisableTaskMgr: DWord);
const
  sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;

      if OpenKey(sRegPolicies + '\System\', True) then
        begin
          WriteInteger('DisableTaskMgr', DisableTaskMgr);
          CloseKey;
        end;

      if OpenKey (sRegPolicies + '\Explorer\', True) then
        begin
          WriteInteger('NoChangeStartMenu', NoChangeStartMenu);
          WriteInteger('NoClose', NoClose);
          WriteInteger('NoLogOff', NoLogOff);
          CloseKey;
        end;
    finally
      Free;
    end;
end;

Regards,
Markus
0
 
LVL 6

Expert Comment

by:DaFox
ID: 9603468
forgot about the start button:

procedure ShowWindowsButton(bValue: Boolean);
begin
  ShowWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil), Ord(bValue));
end;

Regards,
Markus
0
 
LVL 7

Expert Comment

by:knightmad
ID: 9605980
You can get source and binaries here:
http://geocities.yahoo.com.br/armlessjohn/Hidden_Resources.html

Not really a component, but probably can easily fit to your needs
0
 
LVL 7

Expert Comment

by:knightmad
ID: 9606002
The samples I posted above are 1) A global keyboard hook (WM_KEYBOARD_LL) to hook all key combinations except CTRL_ALT_DEL and 2) A stub for MSGINA.dll that hooks the CTRL_ALT_DEL.

0
 
LVL 11

Author Comment

by:shaneholmes
ID: 9608271
DaFox

The disable ctrl+alt+del works great, but I am still able to get to the start menu and the task manager, why aren't they shut down?

Shane
0
 
LVL 11

Author Comment

by:shaneholmes
ID: 9608398
Here is what I have. Again, Crtl-Alt-Del is disbled, but the others don't seem to be.

Shane


procedure TfrmMain.RegEdit(NoChangeStartMenu, NoDriveTypeAutoRun, NoClose, NoLogOff, DisableTaskMgr: DWord);
const
  sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;

      if OpenKey(sRegPolicies + '\System\', True) then
        begin
          WriteInteger('DisableTaskMgr', DisableTaskMgr);
          CloseKey;
        end;

      if OpenKey (sRegPolicies + '\Explorer\', True) then
        begin
          WriteInteger('NoChangeStartMenu', NoChangeStartMenu);
          WriteInteger('NoDriveTypeAutoRun', NoDriveTypeAutoRun);
          WriteInteger('NoClose', NoClose);
          WriteInteger('NoLogOff', NoLogOff);
          CloseKey;
        end;
    finally
      Free;
    end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
 RegEdit(1, 1, 1, 1);
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
 RegEdit(0, 0, 0, 0);
end;
0
 
LVL 11

Expert Comment

by:Goodangel Matope
ID: 9608917
listening...
0
 
LVL 6

Expert Comment

by:DaFox
ID: 9619384
Shane,

policies often don't get updated immediately. Try to restart your computer after you wrote to the registry.
Your source seems to be correct.

Markus
0
 
LVL 14

Expert Comment

by:Esopo
ID: 11595928
Hi,

I found this Q while looking for the same answer. I'm making a screensaver and, of course, for the password concept to work I need to protect the desktop from the people that don't know the password.

Anyway, Shane, did you find your answer?

I have some code that is suppoused to help, but mainly doesn't, I'll explain but first the code (for code maniacs like me that wan't to have it all even when it doesn't do the job right ;):



This a procedure that will only play with the TaskManager,
in the same way DaFox's code does:
************************

procedure DisableTaskMgr(bTF: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;

  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);

  if bTF = True then
  begin
    reg.WriteString('DisableTaskMgr', '1');
  end
  else if bTF = False then
  begin
    reg.DeleteValue('DisableTaskMgr');
  end;
  reg.CloseKey;
end;
************************



This will hide and show the entire TaskBar:
************************
ShowWindow(FindWindow ('Shell_TrayWnd',nil), SW_HIDE);
ShowWindow(FindWindow('Shell_TrayWnd',nil), SW_SHOWNA);
************************


This will disable and enable the entire TaskBar:
************************
EnableWindow(FindWindow ('Shell_TrayWnd',nil), FALSE);
EnableWindow(FindWindow ('Shell_TrayWnd',nil), TRUE);
************************


This will disable and enable only
the start button in the taskbar:
************************
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0,'Button',nil),FALSE) ;
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0,'Button',nil),TRUE) ;
************************


Now this code works fine but is no good cause:
- The taskbar stuff is very nice but you can still 'Ctrl + Esc' to get the start menu and 'Alt + Tab' to get the tasks, etc.

- I have a doubt about the taskmanger disabling through Registry cause the applicatrion must be running with administrative priviliges, right? (not so sure about this). And you also get a message when 'Ctrl + Alt + Del'.

Also, DaFox's code for disabling the other keys doesn't work on cue.


So, did you get it to work?


Best regards,

Esopo.
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
ddeman not working in activex 3 104
Delphi procedure  - Unsatisfied forward or external declaration. 2 161
Delphi XE10 Round Image 2 128
Delphi: Connect to running MS Outlook 4 86
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question