Ver Mensaje Individual
  #2  
Antiguo 29-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola oesqueda.

El motivo de esa advertencia es avisar de que un archivo ha sido descargado de internet y que puede ser potencialmente perjudicial. Windows verifica que el archivo tenga una firma digital que se valida mediante la tecnología Authenticode y de no poseerla, nos muestra el consabido cartelito avisándonos del peligro en cuestión y nos dá la posibilidad de ejecutarlo bajo nuestra responsabilidad.

Obviamente lo ideal es conseguir una firma digital pero, aunque no es lo aconsejable, la advertencia se puede deshabilitar.

Te hice un ejemplo de como hacerlo por código:
Código Delphi [-]
...
uses Registry;

type
  TEnumAction = (acAllow, acAsk, acDeny); 

procedure ExecNotSecureApp(Action: TEnumAction);
const
  KEY = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3';
var
  op: Integer;
  s1,s2,s : string;
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    if OpenKey(KEY, False) then
    begin
      case Action of
        acAllow: s1:= 'Permitir';
        acAsk  : s1:= 'Preguntar';
        acDeny : s1:= 'Prohibir';
      end;
      op := ReadInteger('1806');
      case op of
        0: s2:= 'Permitir';
        1: s2:= 'Preguntar';
        3: s2:= 'Prohibir';
      end;
      if s1 <> s2 then
      begin
        s:= 'Accion actual de seguridad: ' + s2 + #10 +
          '¿ Deseas cambiar la acción por : '+ s1 + ' ?';
        if MessageBox(0, PChar(s), '', MB_ICONQUESTION + MB_YESNO) = IDYES then
          WriteInteger('1806', Integer(Action));
      end
      else
        MessageBox(0, 'Esa acción ya esta definida', '', MB_ICONINFORMATION + MB_OK);
      CloseKey;
    end;    
  finally
    Free;
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
  ExecNotSecureApp(acAllow);
También podes realizar esta acción desde Internet Explorer:
Herramientas -> Opciones de Internet -> Seguridad -> Nivel Personalizado -> Ejecutar aplicaciones y archivos no seguros -> Habilitar (no seguro).


Ahora, si el problema se te presenta con aplicaciones Intranet, podes darle solución por código del siguiente modo:
Código Delphi [-]
procedure ShowMessageNoSecure(Value: Boolean);
const
   KEY = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap';
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey(KEY, False) then
    begin
      WriteInteger('AutoDetect', Integer(Value));
      CloseKey;
    end;
  finally
    Free;
  end;
end;

Llamada:
Código Delphi [-]
  ShowMessageNoSecure(True);  // Mostrará el mensaje
  ShowMessageNoSecure(False); // No mostrará el mensaje
Igual que anteriormente podes modificar esta accion desde el IE:
Herramientas -> Opciones de Internet -> Seguridad -> Intranet Local -> botón Sitios -> Detectar redes intranet automáticamente.

Pero... curiosamente funciona al revés . Selecionado muestra el aviso, de lo contrario no.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 29-12-2012 a las 09:55:30. Razón: ortografía
Responder Con Cita