Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Oulook Kontakte auslesen geht nicht unter C:\Programme (https://www.delphipraxis.net/174681-oulook-kontakte-auslesen-geht-nicht-unter-c-%5Cprogramme.html)

süden 5. Mai 2013 11:51

Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Hallo, ich habe einen Kontaktimport von Outlook (bei mir OL2010,D2007pro, WIN7) eingebaut.

Code von den Schweizern:
Delphi-Quellcode:
procedure TmodOutlook.btnReadOutlookClick(Sender: TObject);
const
  olFolderContacts = $0000000A;
var
  outlook, NameSpace, Contacts, Contact: OleVariant;
begin
  for i := 1 to Contacts.Items.Count do
  begin
    Contact := Contacts.Items.Item(i);
    FrecAdr.FBirthday                := Contact.Birthday;
    FrecAdr.FCompanyName             := Contact.CompanyName ;
    ...
  Finally
    Outlook := UnAssigned;
  End;
Läuft prima! Setup gebastelt, losgeschickt. Fehler!
Code:
Es ist folgender Fehler aufgetreten:Fehlertyp: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben [EOleException]
Dann habe ich das Programm bei mir auf C:\Programme installiert und es kommt ebenfalls der Fehler. Auf D:\Programme nicht.
Ich bin nicht so tief in der Materie drin und wage mich zum ersten mal an OLE usw.

Was läuft da schief? Was kann ich tun? Wonach suchen? Was lesen?

Gruß süden

Aviator 5. Mai 2013 12:23

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Programm als Admin ausgeführt? Wie sieht es mit den Berechtigungen in den jeweiligen Ordnern aus?

süden 5. Mai 2013 12:34

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Im Manifest: level="asInvoker" ",
bei der Ausführung: "Als Admin".

Das Programm sollte aber auch für Nichtadministratoren laufen. Ich kann als Entwickler nicht wissen/verlangen, dass der Anwender nur mit Admin-Konto laufen lässt.

Ich blicks gerade nicht mehr, das Thema (UAC ...) ist für mich ziemlich neu.

jaenicke 5. Mai 2013 20:26

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Du schreibst vermutlich aus Versehen irgendeine Datei in das eigene Verzeichnis. Mit dem Process Monitor solltest du recht schnell herausfinden können was da schief läuft.
(Einfach den Filter auf "Process Name" is "DeineExe.exe" setzen und schauen was passiert...)

süden 5. Mai 2013 22:14

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Um Unklarheitzen zu vermeiden, das Programm selbst läuft gut, nur das Öffnen der Outlook Kontakte wirft den Fehler.
Mir ist nicht bewußt, welche Datei geschrieben werden soll. Mein Programm schreibt ganz sicher keine in das Programmverzeichnis.

Die Prozesskontrolle mache ich morgen. Mal sehen.

Gruß süden

p80286 5. Mai 2013 22:38

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Ich denke zumindestens die Initialisierung von
Delphi-Quellcode:
outlook
fehlt.

Gruß
K-H

baumina 6. Mai 2013 07:43

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Dein Codeausschnitt ist sehr unvollständig, es fehlen die Initialisierungen von mehreren Variablen, ein finally ohne try und das noch innerhalb einer for-Schleife, kann ich mir so alles nicht recht vorstellen.

süden 6. Mai 2013 14:11

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Mein Codausschnitt war unsauber zusammen gefasst - blöd von mir.
Hier noch mal das fast Ganze:
Delphi-Quellcode:
procedure TmodOutlook.btnReadOutlookClick(Sender: TObject);
const
  olFolderContacts = $0000000A;
var
  outlook, NameSpace, Contacts, Contact: OleVariant;
  i: Integer;
  s :String;
begin
  outlook := CreateOleObject('Outlook.Application');
  NameSpace := outlook.GetNameSpace('MAPI');

  Contacts := NameSpace.GetDefaultFolder(olFolderContacts);

  Try
    grdTVOL.DataController.BeginFullUpdate;
    for i := 1 to Contacts.Items.Count do
    begin
      Contact := Contacts.Items.Item(i);
      FrecAdr.FCompanyName             := Contact.CompanyName ;
      FrecAdr.FFirstName               := Contact.FirstName ;
      ... Anschließend das Einbauen der Werte in ein Grid ...
     
  Finally
    grdTVOL.DataController.EndFullUpdate;
    Outlook := UnAssigned;
  End;

end;
Es läuft alles prima, wenn ich den Programmordner nur kopiere, auch auf C:\.
Wenn ich es installiere (Inno) kommt die oben gezeigte Fehlermeldung.

Ausschnitt Inno-Script:
Code:
MinVersion=5.1.2600
[Dirs]
PrivilegesRequired=admin
Name: "{commonappdata}\ocm\BUEROplus3\Konfig"; Permissions: everyone-full authusers-full users-full;
Source: ocmBuero3.exe; DestDir: {app}; Permissions: everyone-full authusers-full users-full;
Das spricht der Prozess-Explorer ab Button-Click bis zur Fehlermeldung:
Code:
Event Class:   Registry | Operation:   RegQueryKey
Result:   BUFFER TOO SMALL
Path:   HKCU\Software\Classes\CLSID\{33C53A50-F456-4884-B049-85FD643ECFED}
TID:   3744 | Duration:   0.0000040 | Query:   Full | Length:   0
--------------------------------------------------------------------------
Event Class:   Registry | Operation:   RegOpenKey
Result:   NAME NOT FOUND
Path:   HKCU\Software\Classes\CLSID\{DEE35070-506B-11CF-B1AA-00AA00B8DE95}\ExtendedErrors
TID:   3744 
Duration:   0.0000077
Desired Access:   Read
--------------------------------------------------------------------------
Date & Time:   06.05.2013 14:46:04
Event Class:   Registry
Operation:   RegOpenKey
Result:   NAME NOT FOUND
Path:   HKCU\Software\Classes\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\ExtendedErrors
TID:   3744 | Duration:   0.0000057 | 
Desired Access:   Maximum Allowed
--------------------------------------------------------------------------
Event Class:   File System | Operation:   QueryOpen | 
Result:   FAST IO DISALLOWED
Path:   C:\ProgramData\ocm\BUEROplus3\Konfig\Errorlog.txt
TID:   3744 | Duration:   0.0000013
Die gleichen Meldungen kommen auch bei der nur kopierten, lauffähigen Version.
Aus der IDE läufts also schwer zu finden.

Hat das etwas mit der UAC zu tun?
Ich habe zwar schon viel gelesen, aber immer noch nicht ganz kapiert.
Installieren als admin, Ausführen als normaler User ...

Der Outlook-Import läuft auch nach der Installation auf D:\.. nicht.

baumina 6. Mai 2013 14:22

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Da du es nicht debuggen kannst, musst du wohl zur alten Methode greifen und an wichtigen Stellen ein ShowMessage einbauen, um den Fehler besser eingrenzen zu können, vielleicht kommst du ja dann einen Schritt weiter.

süden 6. Mai 2013 14:28

AW: Oulook Kontakte auslesen geht nicht unter C:\Programme
 
Das verrückte ist, wenn ich die Exe nach der Installation von Hand einkopiere geht's.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 Uhr.
Seite 1 von 2  1 2      

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