![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Когда отлучаюсь из-за компьютера, включаю программку, чтобы нельзя было работать на комп. в мое отсутствие, но её отключают через Alt+Ctrl+Del. Как его отключить? 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 вот процедура, которая выполняет то, что тебе требуется: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	
uses Registry;  // незабываем подключить этот модуль..!!!!!
procedure LockerTask(lock_id: integer);
const
  sKey = 'DisableTaskMgr';
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', True) then
    begin
      if Reg.ValueExists(sKey) then
      begin
        case lock_id of
          1:   Reg.WriteString (sKey, '1');    // отключить диспетчер
          100: Reg.WriteString (sKey, '100');  // включить диспетчер
        end;
      end;
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;
применять так: блокировка диспетчера - LockerTask(1); разблокировка диспетчера - LockerTask(100);  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Пардон, логика кода улыбнула  
		
	
		
		
		
		
			
		
		
		
		
		
			 ) смешно 2 кэйса ставить. Вот ещё один (тока написанный) вариант:И кстати if Reg.ValueExists(sKey) ты зря поставил. А то например у меня процедура не будет работать, т.к. обработки else у тебя нет. Код: 
	uses Registry; 
...
procedure LockTaskManager(Lock : Boolean = True);
const
  sKey = 'DisableTaskMgr';
begin
 with TRegistry.Create do
   begin
   RootKey := HKEY_CURRENT_USER;
    if not OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', True) then Exit;
    if Lock then WriteString(sKey, '1') else WriteString(sKey, '100');
   CloseKey;
   Free;
   end;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
LockTaskManager();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LockTaskManager(False);
end;Последний раз редактировалось Ferra, 16.01.2010 в 14:07.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Спасибо. Попробую 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 почему ты думаешь что if Reg.ValueExists(sKey) тут лишнее? и при чём тут else??? если данный "кей" существует в реестре, то он редактируется..!!!! чтобы ошибки не выскакивали..!!!!  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Прежде чем писать много восклицательных знаков, хорошо подумай. А что произойдет в твоей процедуре если такого 'кея' нет? Правильно - ничего. А в моем варианте в реестр запишется новый кей, 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 |