C# Ordner erstellen (Pfad Zugriff verweigert)?
Moin,
Wenn ich mit
Directory.CreateDirectory(@"C:\Users\{WindowsUser}\AppData\Local\{GameName}\Saved\SaveGames.");
einen Ordner am angegebenen Pfad erstellen will für Spielstände bekomme ich eine Meldung das das Programm keinen Zugriff auf diesen Pfad hat.
Liegt es daran das die App keine Admin Rechte hat, wenn ja kann man das irgendwie umgehen? Ich will nämlich nur ungern nach Admin Rechten fragen.
Hat sich erledigt
1 Antwort
Umgehen kann man sowas nur, indem man das Programm von dem Ort aus startet, sonst nicht.
Du wirst admin rechte brauchen ... Aber ich glaube das liegt wo anders dran
Directory.CreateDirectory(@"C:\Users\{WindowsUser}\AppData\Local\{GameName}\Saved\SaveGames.");
Schau mal das @ damit ignorierst du sowas wie \\, sodass du \ benutzen kannst. Aber {WindowsUser} scheint eine Variable zu sein, doch du hast vorne kein $ angegeben, da ist nur ein @. Das $ brauchst du für Variablen. Also versucht der das unter {bla} zu speichern und {} sind ungültige Zeichen bei Pfaden. Dadurch gibt es einen Error. Außerdem frage ich mich, ob der Punkt bei SaveGames. gewollt ist. Er ist nicht schlimm, sieht aber komisch aus
So müsste es eigentlich sein:
Directory.CreateDirectory(@$"C:\Users\{WindowsUser}\AppData\Local\{GameName}\Saved\SaveGames.");
Hast du aber mal über den Fakt nachgedacht, dass nicht jeder eine C Festplatte hat? Ich würde da eher sowas benutzen:
string local = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
Directory.CreateDirectory(Path.Combine(local, @$"{GameName}\Saved\SaveGames."));
Somit sucht der sich auf jeden Fall die richtigen Pfade und geht trotzdem in den gewünschten local Ordner
Ich habs mit C:\ gemacht weils für ein Schulprojekt bestimmt ist und es nicht wirklich wichtig ist, weil alle PCs bei uns sowieso C Platten haben. Aber vielen Dank, kann ich für mein nächstes Projekt benutzen oder falls ich dieses hier mal veröffentlichen sollte.
Danke klappt, das $ gefehlt hat ist mir nicht aufgefallen und das mit dem Punkt ist gewollt, das Programm ist ein Launcher und das Spiel was er startet speichert standartmäßig dort.