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:
En el botón escribe:
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var
Registro:TRegistry;
Registro2:TRegistry;
begin
Registro:=TRegistry.create; Registro2:=TRegistry.create; Registro.RootKey:=HKEY_CURRENT_USER; Registro2.RootKey:=HKEY_LOCAL_MACHINE;
if Button1.Caption='Desbloqueado' then
begin
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
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;
Registro.Free;
ShellExecute(Handle, nil, 'tskill', 'explorer', nil, sw_hide);
ShellExecute(Handle, nil, 'explorer.exe', '', '', SW_HIDE);
end;
Esto lo acabo de hacer así que puede que falte algo o también sobre código