não deixar alterar data no xp

Delphi

31/08/2007

Gostaria de saber que comando posso dar para que o usuário não possa alterar a data no windows xp.
Comando para bloquear e outro para liberar.

Obrigado!


Briciosm

Briciosm

Curtidas 0

Respostas

Vitor Alcantara

Vitor Alcantara

31/08/2007

Cara você pode tentar fazer de dois modos, um verificar se o programa do relógio está aberto e fechalo , outro ocultando o relógio da barra de tarefas.

Para verificar se o programa do relógio está aberto você pode fazer assim dentro de um timer:

  //Verifica se existe uma janela com o titulo ´Propriedades de Data e Hora´ 
  if FindWindow(nil,´Propriedades de Data e Hora´) <> 0 then
  Begin
    PostMessage(FindWindow(nil,´Propriedades de Data e hora´),WM_CLOSE,0,0);    
    Application.MessageBox(´As propriedades de data e horas estão bloqueadas.´,´Atenção´,mb_iconWarning);
  end;


eu gosto de fazer em vez de procurar pelo caption da janela eu gosto de procurar pela classe ´RunDLL´ que a maiorias de janelas de proprieades do windows utilizam.

  //if FindWindow(nil,´Propriedades de Data e hora´) <> 0 then
  if FindWindow(´RunDLL´,nil) <> 0 then
  Begin
    //PostMessage(FindWindow(nil,´Propriedades de Data e hora´),WM_CLOSE,0,0);
    PostMessage(FindWindow(´RunDLL´,nil),WM_CLOSE,0,0);
    Application.MessageBox( ´As propriedades do windows estão bloqueadas por questão de segurança para acessalas saia do programa "Comercial".´,´Atenção´,mb_iconWarning);
  end;


Para ocultar o icone do relógio da barra de tarefas você pode fazer via registro alterando o valor ´HideClock´ da chave ´Software\Microsoft\Windows\CurrentVersion\Policies\Explorer´;

Para ocultar fassa do seguinte modo:
var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(´Software\Microsoft\Windows\CurrentVersion\Policies\Explorer´,true);
 key.WriteInteger(´HideClock´, 1);//Valor 1 para desabilitar e valor 0 para habilitar.
 Key.CloseKey;
end;


Atenção nescessita fazer o logoff para que se veja as alterações.
Acho que deva existir outros métodos que eu desconheço mais em uma aplicação comercial eu utilizo pelo método da procura da classe RunDll (if FindWindow(´RunDLL´,nil) <> 0 then), pois desse modo eu desabilito que o usuário altere as configurações (maioria) e hora do sistema.
Só complementando eu gosto também de sincronizar os relógios das máquinas de acordo com a hora do servidor (na hora de entrar no sistema eu dou um ´SELECT GETDATE()´ no servidor SQL Server e atualizo a hora igual).


GOSTEI 0
POSTAR