webentwicklung-frage-antwort-db.com.de

Fehler: In mscorlib.dll ist eine nicht behandelte Ausnahme vom Typ "System.UnauthorizedAccessException" aufgetreten

Dies ist der Teil, der abstürzt und mir diese Fehlermeldung gibt, wenn ich versuche, eine Datei an einen bestimmten Ort zu kopieren.

string startupDirectory = "C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";
File.Copy(startupDirectory, "Startup.exe");

Ich habe online gelesen und Administratorrechte ausprobiert und eine "app.manifest" -Datei erstellt:

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

Ich habe bestätigt, dass in den Einstellungen das App-Manifest auf diese Datei festgelegt ist, aber es gibt mir immer noch den gleichen Fehler.

Ich habe dieses Ereignis auch ausprobiert, obwohl ich nicht dachte, dass es funktionieren würde, da es sich um ein Verzeichnis und nicht um eine Datei handelt:

File.SetAttributes(startupDirectory, FileAttributes.Normal);

Dies ist WinForms und ich arbeite unter Windows 7, möchte aber auch, dass es für Windows 8 und höher funktioniert. Wie mache ich das?

Danke im Voraus!

6
Nullone

Versuchen

public static void Copy(string sourceFileName, string destFileName);

Die erste Überlastung ist die Quelle. Die zweite Überlastung ist das Ziel

File.Copy("Startup.exe",startupDirectory);

Versuchen Sie, die Zugriffsberechtigungen für den .Net-Benutzer, von dem aus Sie die Dateien lesen/speichern, auf "Vollzugriff" zu setzen.

Führen Sie die folgenden Schritte aus, um den Fehler "Zugriff verweigert" auf dem IIS - Server für eine bestimmte Datei zu ermitteln

1- Goto to C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup

2- Right click on your file -> Properties -> Pop Up of User properties appears -> click on Security tab-> click on Edit -> select Users-> tick on Allow Full Control -> Click Ok

Dies wird mit Sicherheit das Problem der Zugriffsverweigerung lösen

Eine UnauthorizedAccessException bedeutet eines von drei Dingen:

  • Der Anrufer verfügt nicht über die erforderliche Berechtigung.
  • pfad ist ein Verzeichnis.
  • der Pfad hat eine schreibgeschützte Datei angegeben.
2

Diese Ausnahme wird durch einen Windows-Fehler ausgelöst. Es gibt keinen dedizierten Fehlercode "Das macht absolut keinen Sinn", sondern nur einen Fehlercode "Zugriff verweigert". Welches .NET in eine UnauthorizedAccessException übersetzt.

Das "macht keinen Sinn" -Problem besteht darin, dass Sie versuchen, ein Verzeichnis mit einer Dateikopiermethode zu kopieren. Verzeichnisse sind keine Dateien. Zum Kopieren eines Verzeichnisses muss zuerst ein neues Verzeichnis erstellt und dann alle Dateien im Verzeichnis kopiert werden. .NET hat eine Methode dafür, die meisten C # -Programmierer neigen dazu zu glauben, es sei der "falsche" Namespace. Es ist Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory ().

Aber Sie müssen ein bisschen mehr über dieses Problem nachdenken, es macht natürlich keinen Sinn, das neue Verzeichnis "startup.exe" aufzurufen. Eine wahrscheinlich gemeint, um eine spezifische Datei aus dem Startverzeichnis zu kopieren, wir können nicht erraten, was es sein könnte.

3
Hans Passant

Versuche dies:

    File.Copy(startupDirectory, "Startup.exe", true);
    File.SetAttributes("Startup.exe", FileAttributes.Normal);
1
octavioccl

Sie können Visual Studio mit Administratorrechten ausführen. (Unter Windows 7 klicken Sie mit der rechten Maustaste auf das Visual Studio-Symbol im Startmenü und klicken Sie auf "Als Administrator ausführen".)

1
Hassan.Siddiqui