GARANTIR DESCONTO

Fórum Alterar gpedit.msc pelo delphi #344506

15/08/2007

0

Gostaria de saber como alterar gpedit.msc pelo delphi para aplicar restrições no windows para sistema de lan house


Visualdesigner

Visualdesigner

Responder

Posts

15/08/2007

Vitor Alcantara

Você pode alterar alguns valores especifico do registro do windows para aplicar algumas restrições.

Segue alguns exemplos de restrições:

As constantes utilizadas no exemplos são:
const
  SISTEMA = ´software\Microsoft\Windows\CurrentVersion\Policies\System´;
  EXPLORER = ´Software\Microsoft\Windows\CurrentVersion\Policies\Explorer´;
  NETWORK = ´Software\Microsoft\Windows\CurrentVersion\Policies\Network´;
  UNINSTALL = ´Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall´;
  DOS = ´Software\Policies\Microsoft\Windows\System´;


Restrições para a página de propriedades do VIDEO:

procedure RestringirVideo(UmParaSimZeroParaNao:Integer);
var
  key : TRegistry;
begin
  key :=TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(SISTEMA,TRUE);
  
  //Desabilita página do papel de parede
  key.WriteInteger(´NoDispBackgroundPage´,UmParaSimZeroParaNao);
  //Desabilita página da aparência
  key.WriteInteger(´NoDispAppearancePage´,UmParaSimZeroParaNao);
  //Desabilita página da proteção de tela
  key.WriteInteger(´NoDispScrSavPage´, UmParaSimZeroParaNao);
  //Desabilita página Configurações
  key.WriteInteger(´NoDispSettingsPage´, UmParaSimZeroParaNao);
  //Deabilita toda propriedade do video
  key.WriteInteger(´NoDispCPL´, UmParaSimZeroParaNao);

  key.CloseKey;
end;


Restrições para o Desktop

procedure RestringirDesktop(UmParaSimZeroParaNao:Integer);
var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(EXPLORER,TRUE);
  //Não mostrar ícones do Desktop
  key.WriteInteger(´NoDeskTop´,UmParaSimZeroParaNao);
  //Desabilita o active Desktop (essa eu não testei ainda)
  key.WriteInteger(´NoActiveDesktop´, UmParaSimZeroParaNao);
  key.CloseKey ;
end;


Restrições da barra de tarefas e menu iniciar

procedure RestringirIniciar(UmParaSimZeroParaNao:Integer);
var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(Explorer,true);

  //Não mostrar o relógio da barra de tarefas
  key.WriteInteger(´HideClock´, UmParaSimZeroParaNao);
  //Desabilita o popup Propriedades da Barra de tarefas
  key.WriteInteger(´NoSetTaskbar´, UmParaSimZeroParaNao);
  //Desabilita o popup completo da barra de tarefas               KEY.WriteInteger(´NoTrayContextMenu´,UmParaSimZeroParaNao);
  //Oculta os icones vizinho ao relógio da barra de tarefas
  kEY.WriteInteger(´NoTrayItemsDisplay´,UmParaSimZeroParaNao);
  key.CloseKey;
end;


Restrições do Explorer.exe

procedure RestringirExplorer(UmParaSimZeroParaNao:Integer);
var
  key:TRegistry;
begin
  
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(EXPLORER,TRUE);
  
  //Desabilita a exibição do Drive C  
  If UmParaSimZeroParaNao = 1 then  
  key.WriteInteger(´NoDrives´,4)
  else
  key.WriteInteger(´NoDrives´,0);
 
   //Desabilita o menu Opções de pastas
  key.WriteInteger(´NoFolderOptions´,UmParaSimZeroParaNao);
  //Desabilita o menu Arquivo
  key.WriteInteger(´NoFileMenu´,UmParaSimZeroParaNao);
  //Desabilita o menu Favoritos
  key.WriteInteger(´NoFavoritesMenu´,UmParaSimZeroParaNao);
  //Limpa a lista de documentos recentes ao sair do windows
  key.WriteInteger(´ClearRecentDocsOnExit´,UmParaSimZeroParaNao);
  //Limpa o histórico da internet ao sair (Não testei ainda)
  key.WriteInteger(´NoRecentDocsHistory´,UmParaSimZeroParaNao);
  //Não mostra o ícone do Internet Explore no Desktop (Não testei ainda)
  key.WriteInteger(´NoInternetIcon´, UmParaSimZeroParaNao);
  key.CloseKey;
end;


Restrições variadas do windows

procedure RestringirSistema(UmParaSimZeroParaNao:Integer);
var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;

  key.OpenKey(DOS,TRUE);
  //Desabilita o Prompt de Dos
  key.WriteInteger(´DisableCMD´,UmParaSimZeroParaNao);
  key.CloseKey;

  key.OpenKey(EXPLORER,true);
  //Desabilita o Executar (Tecla Win + R)
  key.WriteInteger(´NoRun´,UmParaSimZeroParaNao);
  //Desabilita o Localizar (Tecla Win + f)
  key.WriteInteger(´NoFind´,UmParaSimZeroParaNao);
  key.CloseKey;

  key.OpenKey(SISTEMA,true);
  //Desabilita o Regedit
  key.WriteInteger(´DisableRegistryTools´,UmParaSimZeroParaNao);
  key.CloseKey;

end;


Restrições referente ao Painel de Controle

procedure RestringirPainel(UmParaSimZeroParaNao:integer);
var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(EXPLORER , true);
  //Desabilita a propriedade de Sistema  
  key.WriteInteger(´NoPropertiesMyComputer´,UmParaSimZeroParaNao);
  //Não tenho certeza mais parece que desabilita a propriedade de pastas
  key.WriteInteger(´NoSetFolders´,UmParaSimZeroParaNao);
  //Desabilita o painel de controle
  Key.WriteInteger(´NoControlPanel´,UmParaSimZeroParaNao);
  //Bloqueia a adição de novas impressoras
  key.WriteInteger(´NoAddPrinter´,UmParaSimZeroParaNao);
  //Bloqueia a exclusão de impressoras
  key.WriteInteger(´NoDeletePrinter´,UmParaSimZeroParaNao);
  key.CloseKey;
  key.OpenKey(UNINSTALL,TRUE);
  //Desabilita o Adicionar e Remover programas    KEY.WriteInteger(´NoAddRemovePrograms´,UmParaSimZeroParaNao);
  key.CloseKey;

end;


Outras restrições interessantes para LanHouse

procedure RestringirOutros(UmParaSimZeroParaNao:Integer);
var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(EXPLORER,TRUE);
  //Desabilita o botão Logoff do menu Iniciar
  key.WriteInteger(´StartMenuLogOff´,UmParaSimZeroParaNao);
  //Desabilita o botão desligar computador do MenuIniciar
  key.WriteInteger(´NoClose´,UmParaSimZeroParaNao);
  //Não testei ainda mais parece que não gravas as alterações feitas na sessão ao sair
  key.WriteInteger(´NoSaveSettings´,UmParaSimZeroParaNao);
  //Nâo testei ainda mais parece que desabilita as atualizações automáticas do windows
  key.WriteInteger(´NoDevMgrUpdate´,UmParaSimZeroParaNao);
  key.CloseKey;
end;


Para utilizar os comandos acima basta fazer assim:
Begin
  RestringirVideo(1);//Para restringir 
  RestringirVideo(0);//Para desrestringir
end;


No programa que eu desenvolvi para LanHouse para cada restrição eu criei um campo no banco de dados referente a cada máquina, dai eu só restrinjo o que me interessa:
ex:

var
  key:TRegistry;
begin
  key := TRegistry.Create;
  key.RootKey := HKEY_CURRENT_USER;
  key.OpenKey(EXPLORER,TRUE);
  With QrRestricoes do
  Begin
    //Desabilita o botão Logoff do menu Iniciar
    key.WriteInteger(´StartMenuLogOff´,FieldByName(´NoLogoff´).AsInteger);
    //Desabilita o botão desligar computador do MenuIniciar
    key.WriteInteger(´NoClose´,FieldByName(´NoDesligar´).AsInteger);
    //Não testei ainda mais parece que não gravas as alterações feitas na sessão ao sair
    key.WriteInteger(´NoSaveSettings´,FieldByName(´SalvarSessao´).AsInteger);
    //Nâo testei ainda mais parece que desabilita as atualizações   automáticas do windows
    key.WriteInteger(´NoDevMgrUpdate´,FieldByName(´AtualizarWindows´).AsInteger);
  end;
  key.CloseKey;
end;


Existe uma série de outras chaves no registro para restringir o windows, no caso do XP já testei quase todas essas restrições (As que não testei eu coloquei no comentario avisando) e funcionou perfeitamente.


Ps:Lembra de declarar a UNIT Registry na uses do teu form.
Agora eu recomendo enquanto enquanto tiver fazendo testes de se fazer a copia do registro antes para evitar possiveis dor de cabeça.


Responder

Gostei + 0

16/08/2007

Visualdesigner

Olha, muito obrigado, vai me ajudar bastante.

sem querer abusar mais já abusando, você tem alguma idéia de como aplicar essas restrições pela rede. Ou seja a partir do servidor aplicar em todas as estações.


Responder

Gostei + 0

16/08/2007

Vitor Alcantara

Você poderia fazer de duas formas.
1º Você poderia gravar no banco de dados e aplicar toda vida que você inicializa-se o sistema ele verificaria e aplicaria as restrições.
2º Tem um método de você utlizar o registro de outra máquina remotamente, eu não sei bem como fazer mais da uma pesquisada no google que deve ter alguma coisa sobre isso, dai bastaria ao aplicar as restrições da máquina servidora sai aplicando em todas as outras máquinas pelo IP (Com um laço por exemplo).

Logico que teria outras formas de fazer, mais ta ai duas idéias de como aplicar.
Num programa que eu criei eu faço do seguinte modo: Existe uma tabela contendo os dados da máquina (Chave, Nome, IP) e outra tabela contendo as restrições da máquina relacionada a tabela anterior, dai quando eu inicializo o programa ele faz uma consulta verificando quais restrições tem para aquela máquina e aplica as restrições do programa, eu também gravo no registro (pode ser um arquivo INI também) todas as restrições que estão sendo utilizadas pela máquina em uma chave que eu criei especificamente para isso, para poder comparar se a restriçõo está sendo utilizada ou não, caso não esteja eu aplico a restrição e dou um logoff na máquina para que a restrição se aplique.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar