Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Sicherheitsmeldungen unterdrücken (https://www.delphipraxis.net/190879-sicherheitsmeldungen-unterdruecken.html)

norwegen60 15. Nov 2016 20:53

Sicherheitsmeldungen unterdrücken
 
Hallo,

ich habe in meinem Programm eine Möglichkeit geschaffen, dass man einem User ein Mail mit einem Link schickt mit dem er mein Programm mitdem im Link angegeben Projekt startet. Da man Hyperlinks keine Parameter übergeben kann, erstelle ich dazu eine Batchdatei die z.B. den Aufruf
Code:
ECHO OFF
l:\DoQMa\program\doqma_s.exe /P:15068
In doqma_s wird über CallNamedPipe geprüft ob die wirkliche Anwendung bereits läuft und wenn ja das entsprechende Projekt geöffnet. Wenn nicht öffnet doqma_s die Anwenung zusammen mit dem Parameter, so dass ebenfalls gleich das Projekt geöffnet wird.

Das funktioniert auch einwandfrei.
Das Unschöne:
  • Da die Batch-Datei in einem Server-Verzeichnis liegt kommt eine Sicherheitswarnung, dass der Urheber der Batch-Datei nicht bekannt ist
  • Dann zeigt sich das CMD-Fenster
  • Und wenn dort die EXE ebenfalls vom Server aufgerufe wird, kommt wieder eine Sicherheitswarnung, dass der Urheber der EXE nicht bekannt ist
Wie kann ich diese nervigen Meldungen vermeiden?

Vielen Dank
Gerd

dGeek 15. Nov 2016 20:58

AW: Sicherheitsmeldungen unterdrücken
 
Guck mal hier bei MSDN. Vielleicht hilft das ja in irgendeiner Art und Weise.

How to bypass the security warning "Unknown Publisher" with the checkbox "Always Ask Before Opening this File"

himitsu 16. Nov 2016 03:28

AW: Sicherheitsmeldungen unterdrücken
 
Code:
l:\DoQMa\program\doqma_s.exe?/P:15068
Leider wurde beim File-Protokoll vergessen die Parameter durchzureichen, bzw. die werden nur vom Browser interpretiert und der Brwoser gibt nur Alles vor dem ersten ? und # an das Dateisystem durch.

Aber man kann auch einen Bei Google suchencustom protocol handler in delphi registrieren.
Code:
doqma://P=15068

norwegen60 16. Nov 2016 06:43

AW: Sicherheitsmeldungen unterdrücken
 
Zitat:

Zitat von himitsu (Beitrag 1353812)
Leider wurde beim File-Protokoll vergessen die Parameter durchzureichen, bzw. die werden nur vom Browser interpretiert und der Brwoser gibt nur Alles vor dem ersten ? und # an das Dateisystem durch.

Das versteh ich jetzt nicht ganz. Mein Code stammt aus der erzeugten Batchdatei und der Parameter wird auch sauber weitergereicht.
Mein Problem sind die Sicherheitswarnungend die beim Aufruf von ausführbaren Dateien auf Server-Laufwerken erzeugt werden.

nahpets 16. Nov 2016 10:32

AW: Sicherheitsmeldungen unterdrücken
 
Ursache Deines Problems dürfte der Inhalt des Zone Identifiers sein. Ansehbar ist er z. B. über
Code:
Notepad doqma_s.exe:zone.identifier
Die entsprechende Datei sieht inhaltlich in etwa so aus:
Code:
[ZoneTransfer]
ZoneId=3
Es handelt sich dabei strukturell um eine einfache Ini-Datei.

Siehe u. a.: https://msdn.microsoft.com/en-us/library/dn392609.aspx
https://msdn.microsoft.com/en-us/library/ms537183.aspx

Was Du jetzt noch herausfinden musst ist, welchen Wert Du bei
Delphi-Quellcode:
ZoneId=3
eintragen musst, um die Sicherheitsabfrage zu verhindern.

Habe auf meinem Rechner nur den Wert
Delphi-Quellcode:
ZoneID=3
finden können, vermutlich bekomme ich deshalb die Meldung nicht zu sehen.

Ob es eine entsprechende Datei für Dein Programm gibt, kannst Du z. B. so feststellen:
Delphi-Quellcode:
function ZoneIdentifierExists(sFileName : String) : Boolean;
begin
  Result := GetFileAttributes(PChar(Format('%s:Zone.Identifier',[sFileName]))) <> -1;
end;

himitsu 16. Nov 2016 12:48

AW: Sicherheitsmeldungen unterdrücken
 
Das mit dem zone.identifier hilft hier nichts, denn dafür muß sein Programm die Batch erstmals starten, damit das geändert werden kann.

"Ordentliche" Browser/FileDonwnloader kenzeichnen runtergeladene Dateien als Solche, damit man sie eben nicht ohne Rückfrage starten kann.


Achso, dachte die Meldung kommt bereits beim Start der Batch.

nahpets 16. Nov 2016 13:51

AW: Sicherheitsmeldungen unterdrücken
 
Und selbst, wenn die Meldung bei der Batchdatei kommt, dann muss halt deren Zone.Identifier angepasst werden.

Eventuell auch beide ;-)

norwegen60 16. Nov 2016 16:03

AW: Sicherheitsmeldungen unterdrücken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe
Zitat:

Notepad l:\doqma\program\doqma_s.exe:zone.identifier
ausprobiert. Da kommt die Meldung dass die Datei "l:\doqma\program\doqma_s.exe:zone.identifier" nicht gefunden wurde. Um sicherzustellen dass der Pfad stimmt habe ich "Notepad l:\doqma\program\doqma_s.exe" aufgerufen und da werden die Binarys angezeigt. Habe ich da was falsch verstanden? Da muss ich mich noch durch die MSDN durcharbeiten.

Die Meldung kommt auch schon beim Aufruf der Batch. Die Batch selber wird auch als potentiell gefährlich eingestuft. Passiert aber auch, wenn ich eine einfache Batch mit "echo off" per Doppelklick auf einem Netzlaufwerk starte. (s.Anhang)

Dalai 16. Nov 2016 16:13

AW: Sicherheitsmeldungen unterdrücken
 
Ausgelöst wird die Meldung wahrscheinlich von NTFS ADS, mit dem bereits genannten Zone.Identifier. Diese kann man löschen, z.B. mit Sysinternals Streams. IIRC gibt es noch eine Einstellung im IE, mit der man das Verhalten steuern kann; vielleicht hilft schon Systemsteuerung > Internetoptionen > Register Sicherheit > Lokales Intranet > [ ] Intranetnetzwerk automatisch ermitteln (ist die Option aktiviert, stuft Windows sehr gern Server im LAN als im Internet befindlich ein).

Grüße
Dalai

nahpets 16. Nov 2016 16:14

AW: Sicherheitsmeldungen unterdrücken
 
Naja, ween Notepad sagt, die Datei gibt es nicht, dann gibt es sie nicht und kann somit nicht Ursache des Problemes sein.

Gibt es denn die
Code:
Notepad pfadundnamederbatchdatei.bat:zone.identifier
Dann schau, was da drinne steht und ändere es ggfls.

Ansonsten liegt das Problem noch woanders.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz