Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   programar gpedit.msc ???? (https://www.clubdelphi.com/foros/showthread.php?t=65187)

chile_mergas 26-11-2009 08:00:55

programar gpedit.msc ????
 
necesito un programa que pueda modificar las directivas de grupo, por ejemplo que con solo oprimir un boton bloque el panel de control y con otro lo desbloquee,,

ya he buscado en varias partes pero no encuentro un codigo o la funcion para hacer eso,,

si alguien me pudieraayudar, por favor

bosster_018 27-11-2009 02:58:33

Debes utilizar el Registro de Windows (Regedit)
 
Todos los cambios que se pueden realizar en Windows puede ser tratado desde el Registro de Windows (Regedit).
Sólo debes "Googlear" en poco para investigar como cambiar algunas opciones desde el Registro para luego aplicarlo en Delphi.

Por ejemplo buscando "Bloquear Panel de control" me lleva al Registro de Windows:

Desde la Web "batiburrillo.net/adivina/adivina_sop26.php":

Cita:

Este truco funciona perfectamente en Windows Me / 2000 y XP. Aplicándolo podemos impedir que, personas no autorizadas, entren en Panel de Control y cambien opciones que no queremos cambiar.

* Vamos a Inicio \ Ejecutar y escribimos regedit para utilizar el Editor del registro.
* Abrir sucesivamente las ramas según la secuencia:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer.

* Crear o modificar la variable (Edición \ Nuevo \ Valor DWORD) con el nombre NoControlPanel y darle el valor 1.
* Repetir el mismo apartado anterior siguiendo las ramas:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer.

Luego salir del registro y Reiniciar la computadora
Sabiendo esto... Te puedo dar un ejemplo:
En tu formulario agregas un boton y en la caption del botón escribes "Desbloqueado".
Luego en el boton escribes esto:

Antes que nada en las Uses de tu formulario debes agregar:

Código Delphi [-]
Uses
  Registry, ShellApi;

En el botón escribe:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
    Registro:TRegistry;
    Registro2:TRegistry;
begin
  Registro:=TRegistry.create;  //Se crea el primer registro
  Registro2:=TRegistry.create; //Se crea el segundo registro
  Registro.RootKey:=HKEY_CURRENT_USER;  //Se asigna la rama principal
  Registro2.RootKey:=HKEY_LOCAL_MACHINE;  // Se asigna la otra rama principal

  if Button1.Caption='Desbloqueado' then
  begin
    //Aquí se bloquea el panel de control
    Button1.Caption:= 'Bloqueado';
    if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\',FALSE) then
       Registro.WriteString('NoControlPanel',(IntToStr(1)));
    if Registro2.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\',FALSE) then
       Registro2.WriteString('NoControlPanel',(IntToStr(1)));
  end
  else
  begin
    //Aquí se desbloquea el panel de control
    Button1.Caption:= 'Desbloqueado';
    if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\',FALSE) then
       Registro.DeleteValue('NoControlPanel');
    if Registro2.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\',FALSE) then
       Registro2.DeleteValue('NoControlPanel');
  end;
  //Se libera el registro
  Registro.Free;

  {Para que el cambio se vea de inmediato...
  Se debe terminar o reiniciar el proceso "Explorer.exe"}

  //Termina el proceso explorer.exe
  ShellExecute(Handle, nil, 'tskill', 'explorer', nil, sw_hide);
  //Se inicia de nuevo el explorer.exe
  ShellExecute(Handle, nil, 'explorer.exe', '', '', SW_HIDE);

  {Nota.- Si alquien sabe como hacer que se vea el cambio de
   inmediato sin cerrar el "explorer.exe", que hable ahora o calle para siempre}
end;

Esto lo acabo de hacer así que puede que falte algo o también sobre código :p

chile_mergas 28-11-2009 23:48:52

muchas gracias por tu ayuda , era precisamente lo ke estaba buscando

chile_mergas 02-12-2009 02:04:03

nomas rapidamente otra pregunta para este mismo diseño de programa,

no sabe alguien si tambien se pueda bloquear la carpeta de mis documentos, o el messenger desde una aplicacion delphi??


La franja horaria es GMT +2. Ahora son las 22:45:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi