Laden...

System.IO.Directory.CreateDirectory unter Vista

Erstellt von eddieromm vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.254 Views
E
eddieromm Themenstarter:in
255 Beiträge seit 2004
vor 17 Jahren
System.IO.Directory.CreateDirectory unter Vista

Hallo Leute,

ich hab hier ein Problem. Und zwar erstelle ich im Programm (.NET 2.0) einen Temp-Ordner im Ausführungsverzeichniss. Bei mir auf´m Rechner (XP) funktioniert das wie gewohnt. Jetzt teste ich das Programm auf einem Vista - PC und da kommen keine Fehler, machen tut er das aber auch nicht. Was eigentlich noch eigenartiger ist, dass der bei der Abfrage


System.IO.Directory.Exists(Application.StartupPath + "\\Temp")

mir true zurückgibt, obwohl der Ordner nicht existiert.
Hat jemand ne Idee?

mfg

D
386 Beiträge seit 2007
vor 17 Jahren

Hier haben diverse Leute schon gejammert, dass Vista Schreibvorgaenge ins Applikationsverzeichnis umbiegt/verhindert.
Von der Tatsache abgesehen, dass es im Regelfall immer eine schlechte Idee ist ins Anwendungsverzeichnis schreiben zu wollen. Das sollte fuer normale User sowieso nicht beschreibbar sein und kann ggf. auch mal eine (readonly) Netzwerkfreigabe oder dergleichen sein.
Wenn dein Verzeichnis schon so lustig "Temp" heisst, warum gefaellt dir nicht Path.GetTempPath() oder Path.GetTempFileName(), je nach deinen Anforderungen?

Pound for pound, plutonium is about as toxic as caffeine when eaten.

B
1.529 Beiträge seit 2006
vor 17 Jahren

Um es zu klären: Vista erlaubt es keinen Programm ohne Berücksichtigung von UAC ins Programm- oder Windowsverzeichnis zu schreiben. Um jetzt das Problem zu lösen, dass zahlreiche Programme unter XP genau deshalb nicht ohne Adminrechte laufen (nebenbei: wer so etwas sechs Jahre nach Einführung von XP und damit von Sicherheit auf dem Desktop immer noch programmiert, gehört an die Wand gestellt und ...), virtualisiert Vista derartige Zugriffe. Das bedeutet, sie sind scheinbar erfolgreich, werden jedoch in Wirklichkeit in einen speziellen programmspezifischen Ordner in Users gespeichert und bei jedem Dateizugriff des Programms an die von ihm geforderte Stelle projiziert.

E
eddieromm Themenstarter:in
255 Beiträge seit 2004
vor 17 Jahren

Ich hab jetzt das Programm so umgestellt, dass es in den Anwendungsordner schreibt. Jetzt funktioniert das Ganze.

mfg

502 Beiträge seit 2004
vor 17 Jahren

Ein wenig OffTopic, aber ich sag's immer wieder gern:

Um Pfade zusammen zu basteln gibt's Path.Combine - das erspart Ärger... 😉

Bart Simpson

Praxis ist wenn alles funktioniert und keiner weiss warum.
Theorie ist wenn man alles weiss, aber nichts funktioniert.

Bei uns wird Theorie und Praxis vereint: Nichts funktioniert und keiner weiss warum...

L
254 Beiträge seit 2005
vor 17 Jahren

Original von eddieromm
Ich hab jetzt das Programm so umgestellt, dass es in den Anwendungsordner schreibt. Jetzt funktioniert das Ganze.

mfg

Wenn du es tatsächlich so macht wie dus beschreibst, ist es ganz einfach falsch. Borg formuliert es zwar ein wenig radikal aber es stimmt.

Du kannst lange dem rumreiten und es irgendwie hinbiegen aber es ändert nichts an der Tatsache das diese Art und Weise zu programmieren abgeklemmt wird / falsch ist.

Es gibt einen globalen Temp-Ordner und dahin werden Sachen geschrieben und gelesen. Es gibt sicher tausende Eigenbrötler wie dich die jetzt einfach das so haben wollen weil sie es besser wissen.

Wenn du dich gegen neue Sicherheits-Konzepte wehrst und es komplizierter mit deinem eigenen Brot machst, als einfach den richtigen Temp Ordner zu nehmen bei dem die ganze Security und Zugriffschutzmechanismen da sind, wieso verwendest du Vista? Du hast auf diesem System eigentlich nichts verloren, geh doch bitte wieder Windows 2000 oder XP installieren.

Wieso postest du überhaupt in diesem Forum? Wenn du die ganzen kompetenten Antworten in den Wind schlägst und es doch besser weisst?

MfG

Lex

If you can't make it, fake it.

E
eddieromm Themenstarter:in
255 Beiträge seit 2004
vor 17 Jahren

Lexodus:

Also wenn ich hier ne Frage reinstelle, erwarte ich normalerweise eine fachliche Antwort und keinen der hier einfach nur rumpöbelt. Entweder du schreibst warum man bestimmte Sachen nicht tun sollte, oder du lässt es komplett sein. Solche Antworten sind sonst nicht wirklich hilfreich und hinterlassen den Eindruck, du lässt hier nur Dampf ab, ohne einen wirklichen Beitrag zu leisten.

Zudem man bestimmt nicht alles mit dem Temp - Order lösen kann. Es gibt bestimmte Dateien, die man erstellt und länger behalten will, als bis zum Wunsch des Benutzers:"Ich könnte ja mal meinen PC aufräumen". Danach ruft der bei mir an und beschwert sich, warum den alle Einstellungen, Sicherungen etc. auf einmal weg sind. Bis jetzt hab ich sowas im Installationsorder hinterlegt, inswischen verlagere ich alles auf den Anwendungsdaten - Ordner, damit jeder Benutzer seine eigene Einstellungen machen kann, für bessere Lösungen bin ich immer offen.

Ich hab jetzt das Programm so umgestellt, dass es in den Anwendungsordner schreibt. Jetzt funktioniert das Ganze.

Hier hab ich natürlich auch den Anwendungsdaten - Ordner gemeint, falls das jemand vielleicht falsch verstanden hat.

mfg

F
23 Beiträge seit 2006
vor 17 Jahren

Und was ist, wenn sich das Programm aktualisieren soll? File.Replace mit der neuen Datei im Programmverzeichnis schlägt fehl. Ideen?