Solved

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

Posted on 2003-10-22
13
726 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
 
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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

920 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now