Hallo,
wollt mal fragen welches Verzeichnis man für nicht benutzerspezifische Einstellungen unter Vista nimmt? Also Einstellungen die die ganze Anwendung betreffen, aber mit den angemeldeten Benutzer nichts zu tun haben. Ich würde ja einfach sgaen das man %ProgramData% hierfür nutzen kann, aber das Problem ist sobald man da als nicht-Admin versucht reinzuschreiben sich die Virtualisierung sofort einschaltet und die Einstellungen dann doch wieder nutzerspezifisch enden.
Gruß
Snowwolf
Hallo Snowwolf3000,
um die Pfade musst du dich gar nicht kümmern, wenn du [Tutorial] Das neue Konfigurationsmodell im .NET Framework 2.0 benutzt.
herbivore
Environment.GetFolderPath()..
Du willst "CommonApplicationData" haben.
Pound for pound, plutonium is about as toxic as caffeine when eaten.
hi herbivore,
ist mir soweit bekannt. Löst aber mein Problem trotzdem nicht. Die user.config fällt schonmal raus , weil ich ja die Einstellungen anwendungsweit benötige. Bleibt nur noch die App.config und die liegt nunmal im Programmverzeichnis was ebenfalls gesperrt ist. Also hab ich immer noch kein Verzeichnis wo ich hinschreiben kann.
Gruß
Snowwolf
Hallo Snowwolf3000,
ehrt mich ja, dass du dich auf meine Antwort konzentrierst 🙂 aber die anderen beiden haben doch schon geschrieben, welche Verzeichnisse du verwenden kannst.
So gut kenne ich das Konfigurationsmodell leider nicht. Ich weiß also nicht, ob es auch mit diesen beiden Verzeichnissen umgehen kann. Wenn nicht, musst du eben doch "direkt" dort hin schreiben.
herbivore
@herbivore
Klar Ehre wenn Ehre gebührt. 🙂 (sag niemanden das ich nur beim tippen der Anwort unterbrochen wurde und so die Antworten der Anderen nicht gesehen hab)
CommonApplicationData:
Führt zu %ProgramData%. Also genau das Verzeichnis wo ich nicht hinschreiben kann.
Application.UserAppDataPath:
Führt unter Vista zu "c:\users<Benutername\AppData\Roming<Meine Anwendung>". Also wieder zu benutzerspezifischen Einstellungen.
Es ist zum heulen. Eine halbe Million Variablen und alle führen zur selben Stelle.
CommonAppDataPath endet in
%Programdata%<meineAnwendung><meineAnwendung>\1.00\
Warum eigentlich zweimal der Anwendungsname? Egal.
Isolated Storage, Golo hat mir bezüglicher dieser Frage den Tipp gegeben.
Denn Link hab ich auch gefunden : myCsharp
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
So alles mal durchgelesen. So wie es aussieht läuft das trotzdem immer noch alles aufs gleiche drauf raus. Entweder hab ich Adminrechte dann kann ich in %ProgramData% schreiben oder ich hab keine und kann nur benutzerspezifische Einstellungen schreiben.
Das einzige Verzeichnis was ich jetzt gefunden hab, das wohl ohne Adminrechte von allen Benutzern beschrieben werden kann ist "C:\Users\Public" (Der Ordner für die gemeinsamen Bilder, Filme usw.). Aber irgendwie geht das doch an der Sache vorbei wenn ich mir da erst extra ein eigenes Verzeichnis anlegen muss. Kann ichs ja gleich "c:\meineEinstellungen" anlegen.
Hallo Snowwolf3000,
es sollte mit D:\Dokumente und Einstellungen*All Users*\Anwendungsdaten gehen und ich denke, dass es dafür auch eine Möglichkeit im Framework gibt, den Pfad abzufragen.
BTW: Hat eigentlich schon mal jemand versucht einen User "All Users" anzulegen? Oder geht das wegen des Leerzeichens nicht?
herbivore
Es gibt leider kein "All Users" mehr in Vista sondern nur noch ein c:\users\public für gemeinsame Dokumente und ein c:\ProgramData (= %ProgramData% wie ich bisher immer geschrieben hab) auf gemeinsame Programmeinstellungen. Wobei der letzte ordner halt durch die doofe Virtualisierung von Vista geschützt wird, ich kann also keine Daten darin als Standardbenutzer ändern.
Um mal die Unterschiede XP/Vista ein wenig klarer zu machen:
XP: c:\Dokumente und Einstellungen\
Vista: c:\users
XP: c:\Dokumente und Einstellungen\All Users\Anwendungsdaten
Vista: c:\ProgramData
Warum nimmst du nicht den IsolatedStorage? Der Link weiter oben ist doch wunderbar.. Oder ist auch da Vista mal wieder klueger als der User/Nutzer/Entwickler..?
Pound for pound, plutonium is about as toxic as caffeine when eaten.
Ich möchte es ja eben nicht isoliert haben.
Also vielleicht hab ich ja nur was überlesen, aber so wie ich das sehe gibt es keinen Weg anwendungsweite Einstellungen zu ändern.
Der Designfehler ist doch aber eigentlich schon in .net 2.0 vorgezeichnet, wo es keinerlei Möglichkeit gibt die anwendungsbezogenen Einstellungen zu ändern. Der nötige Workaround über das öffnen der App.config als Xml Datei zeigt das ja schon.
So wie ich das sehe, kannst du dort durchaus anwendungsuebergreifend Dateien ablegen/lesen. Vorausgesetzt du willst die Daten nicht zwischen Anwendungen teilen.
Was hat das jetzt bitte mit der app.config zu tun? Und die im Programm zu oeffnen und zu editieren finde ich etwas - uebel.
Pound for pound, plutonium is about as toxic as caffeine when eaten.
Meinst du DarKlajid du könnest mir in zwei Sätzen erklären wie man anwendungsübergreifend Daten liest und schreibt? Also aus den hier genannten Links ist das meiner Meinung nach nämlich nicht zu entnehmen. Wie gesagt es geht hier um Vista, wo viele Verzeichnisse einfach gesperrt sind.
Ich habe mich mit der Materie noch nicht alzu arg beschäftigt aber du muss glaub ein Manifest anlegen und angeben wie und wo du die config öffnen willst.
Original von Snowwolf3000
Meinst du DarKlajid du könnest mir in zwei Sätzen erklären wie man anwendungsübergreifend Daten liest und schreibt? Also aus den hier genannten Links ist das meiner Meinung nach nämlich nicht zu entnehmen. Wie gesagt es geht hier um Vista, wo viele Verzeichnisse einfach gesperrt sind.
Wenn man dem Forumslink weiter oben folgt, kommt man auf die Seite http://www.dotnetdevs.com/articles/IsolatedStorage.aspx ..
Den Artikel hast du ignoriert oder nur unvollstaendig gelesen. Fuer den letztgenannten Fall: Ab der Ueberschrift "Sharing Data Files Between Assemblies - or not"..
Pound for pound, plutonium is about as toxic as caffeine when eaten.
Danke DarKlajid. War letzteres. Hab übersehen das man als Quelle neben User eben auch Machine einstellen kann.