Seite 1 von 1

Problem mit Starten als Administrator

Verfasst: 08.08.2023 22:06
von bin_neu_hier
Moin Leute,

habe einen kleinen Dateimanager gebastelt, der beispielsweise PDF-Dateien per Doppelklick öffnet (via Runprogram). Ja, nichts Großartiges - funzt, wie man das erwartet hätte.
Wenn ich den Dateimanager aber als Administrator starte, kann der das nicht mehr! Der Taskmanager zeigt, dass 2 Acrobat-Instanzen gleichzeitig starten. Wenn ich meinen Dateimanager dann beende und mittels WindowsExplorer eine PDF per Doppelklick starten will, werden im Taskmanager zwei weitere Instanzen gestartet - aber keine Datei geöffnet bzw. angezeigt. Bei PNG-Dateien wird auch im Administratormodus das Grafikprogramm geöffnet und die Grafik angezeigt. Das Dateiaufruf sieht folgendermaßen aus:

Code: Alles auswählen

err = RunProgram(GetGadgetText(#path_l)+GetGadgetItemText(#ligleft, i, 0))
wobei [GetGadgetText(#path_l)] den absoluten Pfad und [GetGadgetItemText(#ligleft, i, 0)] den Dateinamen aus einem Listicongadget liest (Zeile = i, Spalte = 0). Es wird also nur die Datei aufgerufen, die dazugehörige Anwendung (im Beispiel der Acrobat Reader als Anwendung für PDF-Dateien) startet von selbst.
Hat jemand eine Idee, wie das Problem zu umgehen ist?

Re: Problem mit Starten als Administrator

Verfasst: 09.08.2023 16:51
von Sicro
Versuche es mal damit:

Code: Alles auswählen

Procedure.i OpenWithStandardProgram(FilePath$)
  
  Protected Result
  
  ; Avoid problems with paths containing spaces
  FilePath$ = #DQUOTE$ + FilePath$ + #DQUOTE$
  
  ; https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutew
  Result = Bool(ShellExecute_(0, "open", FilePath$, #Null, #Null, #SW_SHOW) > 32)
    
  ProcedureReturn Result
  
EndProcedure

OpenWithStandardProgram("Pfad zur PDF-Datei")
Auszug aus dem Modul: PB-CodeArchiv-Rebirth/System/OpenStandardProgram.pbi

Re: Problem mit Starten als Administrator

Verfasst: 09.08.2023 19:36
von bin_neu_hier
Hallo Sicro,

vielen Dank für den Vorschlag. Aber das Problem bleibt auch damit bestehen. Habe Deine Routine mal ein wenig erweitert:

Code: Alles auswählen

Procedure.i OpenWithStandardProgram(FilePath$)
Protected Result
; Avoid problems with paths containing spaces
FilePath$ = #DQUOTE$ + FilePath$ + #DQUOTE$
; https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutew
Result = Bool(ShellExecute_(0, "open", FilePath$, #Null, #Null, #SW_SHOW) > 32)
ProcedureReturn Result  
EndProcedure


StandardFile$ = "C:\*.*"
Pattern$ = "Alle Dateien (*.*)|*.*"
  Pattern = 0
  File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
  If File$    
    Debug OpenWithStandardProgram(File$)
  Else
    MessageRequester("Information", "Der Requester wurde abgebrochen.", 0) 
  EndIf
Habe damit ein Executable erstellt und auch das zeigt den Effekt, dass als Administrator gestartet sich keine PDF-Datei anzeigen lässt. Auch hier werden wieder zwei Acrobat Instanzen gleichzeitig im Taskmanager gezeigt. Wenn man einen Task davon killt, verschwindet der zweite auch. Startet man das Programm als normaler User, funzt das genau so wie man es erwarten würde. Ist vielleich gar kein Purebasic-Problem, sondern eins vom Acrobat Reader? Oder nur von meinem PC?

Habe mein Programm inzwischen angepasst. Zuerst wird gecheckt, ob PDF-Dateien einem Programm zugeordnet sind und dann wird das zugeordnete Programm (bei mir der AcrobatReader) gestartet und die Datei als Parameter übergeben. Ist damit vielleicht etwas professioneller, aber zeigt das gleiche Problem. Insgesamt führen jetzt also 3 Wege zum gleichen Problem.

Kann das eigentlich jemand nachvollziehen, oder findet das Problem nur auf meinem PC statt?

Re: Problem mit Starten als Administrator

Verfasst: 09.08.2023 19:48
von mk-soft
Geht hier als Admin.

Vielleicht ist bei dir als Admin für PDF kein Programm zugewiesen.

Re: Problem mit Starten als Administrator

Verfasst: 09.08.2023 19:53
von bin_neu_hier
aber warum startet dann der Reader 2 Instanzen?