Laden...

Path.GetTempPath() gibt unterschiedliche Resultate?

Erstellt von daprodigy vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.052 Views
D
daprodigy Themenstarter:in
74 Beiträge seit 2008
vor 13 Jahren
Path.GetTempPath() gibt unterschiedliche Resultate?

Hallo zusammen

Ich hab' einen eher uncoolen Effekt mit Path.GetTempPath().

Ausgangslage:
Ich hab' ein MSI, das über WiX erzeugt wurde und woraus Custom Actions (geschrieben in C#) aufgerufen werden. Innerhalb dieser Actions erstelle ich Dateien im Temp-Ordner, lese sie in einer anderen Action wieder aus, kopier' die Datei und lösch' sie zum Schluss. So weit so gut.

Nun hab' ich das MSI auf einer 64bit-Maschine getestet. Der Aufruf Path.GetTempPath() gibt bei der einen Custom Action den Wert 'C:\Documents and Settings\Admin\Local Settings\Temp\2' zurück und bei einer anderen Custom Action den Wert 'C:\Documents and Settings\Admin\Local Settings\Temp'.

Wie kann das sein?? Die aufgerufenen Custom Actions befinden sich alle in derselben Assembly.

Betriebssystem ist Win Server 2003 Enterprise 64bit.

Vielen Dank für die Hilfe!

Gruss,
daprodigy

lieber arm dran als arm ab.

2.760 Beiträge seit 2006
vor 13 Jahren

Aus der Doku:

Returns the path of the current user's temporary folder

Benutzt eine deiner Custom Actions impersonation?

D
daprodigy Themenstarter:in
74 Beiträge seit 2008
vor 13 Jahren

Naja, ich bin halt mit dem Admin-User eingeloggt und starte das MSI.

Das Konfuse ist eigentlich, dass ich zwei verschiedene Verzechnisse zurück bekomme ...

lieber arm dran als arm ab.

2.760 Beiträge seit 2006
vor 13 Jahren

Hmm... hab ich wohl nicht richtig gelesen, ist ja immer der Admin-Pfad mit drin.

Kann ich leider (oder doch zum Glück;) nicht nachvollziehen.
Testcode:


        static string _temp = "";
        static void Main(string[] args)
        {
            for (int i = 0; i < 10000000; i++)
            {
                string tmp = Path.GetTempPath();
                if (_temp != tmp)
                {
                    Console.WriteLine(tmp);
                    _temp = tmp;
                }
            }

            Console.ReadKey();
        }

Schau noch mal genau durch deinen Code. Ich kann mir eigentlich nur noch vorstellen das du den Pfad irgendwo im Code umbaust.

[EDIT]
Oder irgendetwas im MSI Pfuscht an den Umgebungsvariablen rum.