Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi "Als Administrator ausführen" URLDownloadToFile geht nicht mehr (https://www.delphipraxis.net/205604-als-administrator-ausfuehren-urldownloadtofile-geht-nicht-mehr.html)

SearchBot 27. Sep 2020 19:34

"Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Hallo,

ich hab das seltsame Phänomen, daß mein Programm, wenn es als Administrator ausgeführt wird, keine Downloads mehr machen kann - ohne Admin-Rechte geht es mit dem Runterladen aber prima.

Ich benötige die Adminrechte nur, um den Netzwerkadapter automatisch neu zu starten (weil der bei meinem Chuwi-Tablet sporadisch abstürzt, und einfach de- und wieder aktivieren hilft) und automatisch, weil die Anwendung unbeaufsichtigt arbeitet, und die Umgebung automatisch intakt halten soll.
Der Anwender kann mein Programm auch normal starten, wenn er diese Funktion nicht braucht. Ich möchte sie nicht gleich mit gehobenen Rechten ausliefern.

Woran kann es liegen, daß URLDownloadToFile (von urlmon-Unit) mit Adminrechten keine Datei (einfache txt-Datei von einer https-Webseite) herunterladen kann, ohne die Rechte aber schon?

Dalai 27. Sep 2020 19:46

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Um der Ursache näherzukommen, solltest du den Rückgabewert der Funktion MSDN-Library durchsuchenURLDownloadToFile auswerten.

Grüße
Dalai

SearchBot 27. Sep 2020 20:13

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Okay..

Normal: 0
Als Admin: 0

Hilft nicht weiter :(

Dalai 27. Sep 2020 20:23

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Wie ist es mit einer anderen URL? Mal den Cache des IE gelöscht?

Grüße
Dalai

SearchBot 27. Sep 2020 20:23

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Hm..

kann es sein, daß als Admin ausgeführte Programme einen anderen Dateipfad als Programmordner verwenden?

Ich lese den Download später ein und normal einfach so
Delphi-Quellcode:
memo.LoadFromFile('temp.txt')
, was normal geht, aber beim Admin muss ich den Pfad extra dazu schreiben
Delphi-Quellcode:
memo.LoadFromFile(extractfilepath(application.exename)+'temp.txt')
Dann geht es, habe ich gerade bemerkt...

Dalai 27. Sep 2020 21:02

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Sich darauf zu verlassen, dass das Arbeitsverzeichnis schon stimmen wird, ist nie eine gute Idee. Pfade gibt man immer absolut an, am sinnvollsten aus Variablen zusammengebaut. Aber nie hartkodiert oder unter der Annahme "Den Pfad gibt's auf jedem System".

Grüße
Dalai

Delphi.Narium 28. Sep 2020 09:07

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Wenn ich bei Programmen sicherstellen möchte, dass das Programmverzeichnis auch das Arbeitsverzeichnis ist, gibt es im FormCreate (oder einer anderen, beim Progammstart garantiert ausgeführten Stelle) diese Zeile:
Delphi-Quellcode:
  ChDir(ExtractFilePath(Application.ExeName));
Das ist z. B. bei Programmen sinnvoll, die grundsätzlich von 'ner externen Festplatte gestartet werden und deren Ein- und Ausgabedaten auch auf dieser Festplatte liegen.

Bei Programmen, die regulär installiert werden, ist dieses Vorgehen eher kontraproduktiv.

Rollo62 28. Sep 2020 10:16

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Zitat:

Zitat von SearchBot (Beitrag 1474410)
Ich benötige die Adminrechte nur, um den Netzwerkadapter automatisch neu zu starten ...

Vielleicht liegt es ja genau daran.
Hast Du mal versucht als Admin zu starten, OHNE den Netzwerkadapter zurückzusetzen ?

Das sollte sich doch gleich verhalten wenn Du das Rücksetzen mal einfach rausnimmst.

Michael II 28. Sep 2020 11:28

AW: "Als Administrator ausführen" URLDownloadToFile geht nicht mehr
 
Zitat:

Zitat von SearchBot (Beitrag 1474415)
Hm..

kann es sein, daß als Admin ausgeführte Programme einen anderen Dateipfad als Programmordner verwenden?

Ich lese den Download später ein und normal einfach so
Delphi-Quellcode:
memo.LoadFromFile('temp.txt')
, was normal geht, aber beim Admin muss ich den Pfad extra dazu schreiben
Delphi-Quellcode:
memo.LoadFromFile(extractfilepath(application.exename)+'temp.txt')
Dann geht es, habe ich gerade bemerkt...

Ich nehme an du beziehst dich auf Windows.
- GetCurrentDir hast du (bei deiner "Ohnepfad;-)" Lösung) mal abgefragt (?).
- U.a. mithilfe von ProcMon siehst du wohin die Datei geschrieben wird.
- Relative Pfade solltest du eh vermeiden. Das Setzen eines Dirs beim Programmstart muss nicht heissen, dass diese Wahl bestehen bleibt. (siehe m$)
- Ins Verzeichnis der App sollte man keine Daten schreiben. Dafür sind andere Ordner vorgesehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr.

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