C# Ordner erstellen (Pfad Zugriff verweigert)?


11.09.2021, 14:48

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.");
Zuran57 
Fragesteller
 11.09.2021, 14:48

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.

1
FaTech  11.09.2021, 14:58
@Zuran57

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

0
Zuran57 
Fragesteller
 11.09.2021, 18:52
@FaTech

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.

1