Fórum Alterar gpedit.msc pelo delphi #344506
15/08/2007
0
Visualdesigner
Curtir tópico
+ 0Posts
15/08/2007
Vitor Alcantara
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.
Gostei + 0
16/08/2007
Visualdesigner
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.
Gostei + 0
16/08/2007
Vitor Alcantara
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)