![]() |
Mit CreateProcessWithLogonW PDF starten? Alternative?
Guten Morgen!
Ich beschäftige mich zur Zeit mit ![]() Gruß, freakfly |
Re: Mit CreateProcessWithLogonW PDF starten? Alternative?
Hmmm.. Ich versuch gerade erst
![]()
Delphi-Quellcode:
Weiss jemand warum das nicht geht, oder hat Tips zum Thema?
procedure TForm1.FormCreate(Sender: TObject);
var bStart : boolean; s : string; h : THandle; begin bStart := false; application.showmainform := false; //ParamStr (1) bStart := LogonUser( 'user23', 'mydomain', '007', LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, h); if not bStart then begin str(getLastError,s); showMessage('Prozess konnte nicht erstellt werden:'+ #13+ SysErrorMessage(Strtoint(s))); Application.Terminate; end else begin ShellExecute(Application.Handle,'open',PCHar('\\server1\user23$\home.pdf'),nil,nil,sw_ShowNormal); // Application.Terminate; end; end; Gruß, freakfly |
Re: Mit CreateProcessWithLogonW PDF starten? Alternative?
Selbst wenn du per LogonUser erfolgreich einen anderen User anmeldest bekommst du nur ein Token zurück, dass du zb für CreateProcessAsUser o.ä. verwenden kannst. ShellExecute startet den neuen Prozess immer als Child-Prozess deines Prozesses und erbt damit auch den Security-Kontext. Was du machen könntest: den AcrobatReader (oder welches Programm auch immer mit PDF verknüpft ist) per CreateProcessWithLogonW starten und die zu öffnende PDF-Datei per DDE übergeben..
|
Re: Mit CreateProcessWithLogonW PDF starten? Alternative?
An das dachte ich auch schon.. Da das Programm aber inner Domain verwendet werden soll, weiss ich ja nie, wo der Acrobat installiert ist. Schön wäre halt auch wenn es mit *.doc Dateien auch funktionieren würde...
|
Re: Mit CreateProcessWithLogonW PDF starten? Alternative?
Zitat:
|
Re: Mit CreateProcessWithLogonW PDF starten? Alternative?
Zitat:
|
Programmverknüpfung feststellen
Wenn es jemanden interessieren sollte, hier hab ich was gefunden...
Delphi-Quellcode:
uses
ShellApi; resourcestring SFILE_NOT_FOUND = 'Die angegebene Datei "%s" konnte nicht gefunden werden.'; SNO_ASSOCIATED_EXE = 'Für den angegebenen Dateitypen ist kein ausführbares Programm verfügbar.'; SPATH_NOT_FOUND = 'Der angegebene Pfad "%s" konnte nicht gefunden werden.'; SEXE_INVALID = 'Das ausführbare Programm ist keine gültige Win32-Anwendung.'; function GetExecutable(const AFileName: string): string; var FileName, Directory: string; begin FileName := ExtractFileName(AFileName); Directory := ExtractFilePath(AFileName); Setlength(Result, MAX_PATH); FillChar(Pointer(Result)^, Length(Result), #0); case FindExecutable(Pointer(FileName), Pointer(Directory), Pointer(Result)) of 0: OutOfMemoryError; 31: MessageDlg(SNO_ASSOCIATED_EXE, mtError, [mbOk], 0); ERROR_FILE_NOT_FOUND: MessageDlg(Format(SFILE_NOT_FOUND, [FileName]), mtError, [mbOk], 0); ERROR_PATH_NOT_FOUND: MessageDlg(Format(SPATH_NOT_FOUND, [Directory]), mtError, [mbOk], 0); ERROR_BAD_FORMAT: MessageDlg(SEXE_INVALID, mtError, [mbOk], 0); end; Setlength(Result, StrLen(Pointer(Result))); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 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