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/)
-   -   Delphi Outlook Sicherheitsmeldung (https://www.delphipraxis.net/55883-outlook-sicherheitsmeldung.html)

Boombuler 28. Okt 2005 09:44


Outlook Sicherheitsmeldung
 
Hi @ all

ich habe ein Programm das Daten mit Outlook synchronisiert. Nur seit ein paar Outlook Versionen bekommt man immer diese tolle Sicherheitsmeldung ob man den Zugriff erlauben möchte.

Diese muss umbedingt abgestellt werden... Kunden meckern etc. pp

Momentan habe ich dieses mit einem API-Hook von SetForegroundWindow gemacht, der das Fenster richtig einstellt und dann auf OK klickt. Problem dabei ist es flackert ungemein... Dies nervt besonders in Terminal-Sitzungen...

Hat jemand ne Idee wie ich das noch anderweitig lösen könnte?

Ne Idee wäre noch mit WriteProcessMemory die Abfrage im laufenden Betrieb zu entfernen. Das wirft aber das Problem auf, das man die Funktion im Prinzip für jede erdenkliche Outlook Version neu schreiben müsste!

Greetz
Boombuler

Phoenix 28. Okt 2005 10:11

Re: Outlook Sicherheitsmeldung
 
Fakt ist: Dies ist (aus etlichen wirklich guten Gründen) nicht möglich.

Wenn Du es abschalten könntest könnten das die Viren- und Würmerentwickler auch. Das Daten aus Outlook nicht mehr ohne Benutzererlaubnis abrufbar sind verhindert, dass sich eben solche Schädlinge diese Daten zu Nutze machen um sich zu verbreiten.

Die 'ich klicke einfach selber' Methode ist übrigens ein Grund warum eine solche Software die ISO-Qualitätskriterien nicht mehr erfüllen darf. Sollte Dein Unternehmen nach ISO zertifiziert sein mach das Ding lieber wieder raus wenn Ihr Euer Zertifikat nicht los werden wollt.

Boombuler 28. Okt 2005 12:40

Re: Outlook Sicherheitsmeldung
 
Schon gut ^^

Seltsam ist nur das diverse andere Firmen das auch schaffen die meldung auszuhebeln...

Greetz
Boombuler

Bernhard Geyer 28. Okt 2005 12:51

Re: Outlook Sicherheitsmeldung
 
Zitat:

Zitat von Boombuler
Seltsam ist nur das diverse andere Firmen das auch schaffen die meldung auszuhebeln...

Ich denke mal diese anderen Firmen haben ein Plugin für Outlook geschrieben und greifen somit nicht über die Externe COM-Schnittstelle zu wie es alle einfachen Script-Würmen getan haben.

Evtl. hilft dieser Thread

Heffalump 28. Okt 2005 12:57

Re: Outlook Sicherheitsmeldung
 
Die besagten Firmen, welches es ohne diesen Hinweis schaffen, nutzen die Extended MAPI. Hier ein Link, wo entsprechende Delphibeispiele zu finden sind.

Extended MAPI in DELPHI

backdraft 20. Nov 2005 23:13

Re: Outlook Sicherheitsmeldung
 
Hat den jemand einen Vorschlag, wie man das Problem lösen kann? Ich hasbe nämlich das selbe Problem.

Luckie 21. Nov 2005 00:00

Re: Outlook Sicherheitsmeldung
 
Es gibt keine Lösung und das ist auch gut so.

Phoenix 21. Nov 2005 01:58

Re: Outlook Sicherheitsmeldung
 
Naja.. eine Lösung gibt es tatsächlich.. man kann seine Software von MS zertifizieren lassen. Mit dem korrekten Zertifikat fragt Outlook dann nicht mehr ab. Aber das ist halt nicht ganz billig.

Heffalump 22. Nov 2005 12:27

Re: Outlook Sicherheitsmeldung
 
Es geht ohne Sicherheitshinweise. Schaut Euch das Beispiel Example # 4 an. Ich habe mir das Package zugelegt und mir dieses Beispiel (im Sourcecode) angeschaut. Das Beispiel greift auf das Adressbuch zu, zeigt alle Einträge (inkl. der Mailadressen an). Keine Zauberei, keine Zertifizierung oder ähnliches.

mgubler 22. Nov 2005 12:43

Re: Outlook Sicherheitsmeldung
 
Ich sage nur: MAPI Labs.
Dort kann man ein Tool für Outlook runterladen.
Für Exchange gibt es administrative Vorlagen um diese Meldung zu unterbinden!

Hier ist der Download: Download: Outlook Security

LuckySpacy 15. Jan 2006 11:25

Re: Outlook Sicherheitsmeldung
 
Ich habe mich gerade mit diesem Thema beschäftigt.
Alles was ich dazu gefunden habe, erschien mir äußerst kompliziert.
Um andere jetzt die Stundenlange suche im Internet zu ersparen, möchte ich meine Lösung kurz aufzeigen.

Die Lösung für mich heißt Redemption.dll

Hier ist der Link zur Outlook Redemption: www.dimastr.com
oder direkt herunterladen unter: Redemption.zip

Dann die Install.exe ausführen.

Hier ist ein kleines Beispielprogramm:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  olFolderContacts = $0000000A;


type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FOutlook      : Variant;
    FMAPI         : Variant;
    FSafeContact  : Variant;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  ComObj;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOutlook := CreateOleObject('Outlook.Application');
  FMAPI   := FOutlook.GetNameSpace('MAPI');
  FMAPI.Logon;
  FSafeContact := createoleobject('redemption.SafeContactItem');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FMAPI.Logoff;
  FSafeContact := Unassigned;
  FOutlook    := Unassigned;
  FMAPI       := Unassigned;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ContactList: Variant;
begin
  ContactList      := FMAPI.GetDefaultFolder(olFolderContacts);
  try
    FSafeContact.Item := ContactList.Items.Item(1);
    Edit1.Text       := FSafeContact.Email1Address;
  finally
    ContactList      := Unassigned;
  end;
end;
Normalerweise würde beim Lesen der Email1Address von Outlook eine Sicherheitsmeldung kommen.
Dies sollte jetzt dank der Redemption.dll nicht mehr passieren.

Alle andere Zugriffe wie z.B. auf Termine oder EMail funktionieren ähnlich.

Heffalump 15. Jan 2006 18:26

Re: Outlook Sicherheitsmeldung
 
Hat den Nachteil, das Du auf die Weiterentwicklung der Software angewiesen bist. Im Fehlerfall wird es zudem schwehr werden, die Ursache zu finden (liegt es an Deiner Source oder an der Implementierung der Zusatzsoftware oder an der MAPI). Was ist wenn die nächste Outlookversion auf den Markt kommt, einer Deiner Kunden diese einsetzen muss und die "Brückensoftware" diese Outlookversion noch nicht unterstützt? Ich bin dann doch lieber für eine eigene Implementierung der benötigten Funktionen. Dass das auch mit dem Auslesen von Kontaktinformationen funktioniert (ohne Sicherheitshinweis), kannst Du diesem Beitrag entnehmen.

LuckySpacy 16. Jan 2006 11:03

Re: Outlook Sicherheitsmeldung
 
Zitat:

Zitat von Heffalump
Hat den Nachteil, das Du auf die Weiterentwicklung der Software angewiesen bist.

Das stimmt zwar, aber es funktioniert.
Meine Ausführungen sind an die gerichtet, die schnell und unkompliziert eine Lösung suchen.

Ich hatte mir übrigens auch Deine Lösung angeschaut. Nur diese ist leider schon im Ansatz gescheitert.
Ich habe mir Dein Programm MapiTestZip.zip heruntergeladen und wollte den Code in Delphi 7 kompilieren.
Ich bekam ein Fehler in folgender Zeile: "function PropertyIDtoPropertyTag(&object: IMAPIProp; pvID: ULONG): ULONG;"
Die Fehlermeldung lautet: "[Fehler] Unit4.pas(48 ) : Ungültiges Zeichen in Eingabedatei: '&' ($26)"
Ich muss gestehen, ich kann nichts damit anfangen und weiß auch nicht was falsch ist.

Möglicherweise liegt es auch an den eingebundenen Dateien: "mapidefs, mapiguid, mapitags, mapix".
Diese Dateien wurden ja von Dir nicht mitgeliefert.
Ich habe Sie im Forum Delphi3000.com gefunden.

Trotz alle dem habe ich mir Dein Quellcode angeschaut.
Um das alles zu Verstehen reicht "normales" Delphi-Wissen nicht aus.
Da muss man sich schon länger damit auseinander setzen.

Aber vielleicht kannst Du mir trotzdem helfen.
Was muss ich tun, damit ich Dein Programm fehlerfrei kompilieren kann?
Ich würde es nämlich gerne einmal debuggen.

Und was macht das Programm OutSpy.exe ?
Wieso benötige ich das?
Das Programm habe ich mir bisher noch nicht installiert.

Heffalump 16. Jan 2006 11:42

Re: Outlook Sicherheitsmeldung
 
Zitat:

Zitat von LuckySpacy
Meine Ausführungen sind an die gerichtet, die schnell und unkompliziert eine Lösung suchen.

Es gibt eine für mich wichtige Erfahrung, welche ich bisher im Rahmen der Programmierung gemacht habe. Schnelle Lösungen führen im Nachgang immer zu Problemen.

Zitat:

Zitat von LuckySpacy
Ich hatte mir übrigens auch Deine Lösung angeschaut. Nur diese ist leider schon im Ansatz gescheitert.
Ich habe mir Dein Programm MapiTestZip.zip heruntergeladen und wollte den Code in Delphi 7 kompilieren.
Ich bekam ein Fehler in folgender Zeile: "function PropertyIDtoPropertyTag(&object: IMAPIProp; pvID: ULONG): ULONG;"
Die Fehlermeldung lautet: "[Fehler] Unit4.pas(48 ) : Ungültiges Zeichen in Eingabedatei: '&' ($26)"
Ich muss gestehen, ich kann nichts damit anfangen und weiß auch nicht was falsch ist.

Ersetze das '&' einfach durch '_', dann sollte es funktionieren.

Zitat:

Zitat von LuckySpacy
Möglicherweise liegt es auch an den eingebundenen Dateien: "mapidefs, mapiguid, mapitags, mapix".
Diese Dateien wurden ja von Dir nicht mitgeliefert.
Ich habe Sie im Forum Delphi3000.com gefunden.

Die Dateien kannst Du von der gleichen Webseite herunterladen, von der Deine DLL stammt. Unter Resources gibt es den Punkt "Extended MAPI headers for Borland Delphi ".

Zitat:

Zitat von LuckySpacy
Trotz alle dem habe ich mir Dein Quellcode angeschaut.
Um das alles zu Verstehen reicht "normales" Delphi-Wissen nicht aus.
Da muss man sich schon länger damit auseinander setzen.[Fehler]

Ich denke mal, das man sich generell mit der Software, den Schnittstellen und deren Arbeitsweise auseinander setzen muss. Ich verstehe durchaus, das die MAPI Programmierung nicht gerade einfach ist, da es sich hier um eine sehr umfangreiche Schnittstelle handelt. Wenn man es aber erst einmal verstanden hat, dann macht das auch noch Spaß und die gesammelten Erfahrungen sind Gold wert.

Zitat:

Zitat von LuckySpacy
Und was macht das Programm OutSpy.exe ?
Wieso benötige ich das?
Das Programm habe ich mir bisher noch nicht installiert.

OutSpy ist das Setup für ein Outlook Addon. Dieses zeigt in ausführlicher Weise die internen Eigenschaften und Zugriffswege von Outlook im Zusammenspiel mit der MAPI.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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 by Thomas Breitkreuz