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); ShowMessageNoSecure(False);
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.