Warum kann ich keinen oneedrive -synchronisierten Ordner mit C# löschen?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Warum kann ich keinen oneedrive -synchronisierten Ordner mit C# löschen?

Post by Anonymous »

Mein Problem ist, dass ich einen Ordner löschen möchte, der von mir im OneDrive -Verzeichnis auf dem Benutzersystem erstellt wurde, dem Verzeichnis, das Sie beim Eingeben von "%OneDrive%" im Datei -Explorer erreichen, aber ich erhalte einen Fehler: < /p>
System.IO.IOException: Access to the path '\\?\C:\Users\user\OneDrive\Dokumente\Test\dc978eb5340c40d2887ad68fcd70a765' is denied.
at System.IO.FileSystem.RemoveDirectoryInternal(String fullPath, Boolean topLevel, Boolean allowDirectoryNotEmpty)
at System.IO.FileSystem.RemoveDirectoryRecursive(String fullPath, WIN32_FIND_DATA& findData, Boolean topLevel)
at System.IO.FileSystem.RemoveDirectory(String fullPath, Boolean recursive)
at System.IO.DirectoryInfo.Delete(Boolean recursive)
at ExampleOnedriveError.Form1.deleteButton_Click(Object sender, EventArgs e) in C:\projects\cmi\ExampleOnedriveError\ExampleOnedriveError\Form1.cs:line 47
< /code>
Ich habe die folgenden Dinge ausprobiert: < /p>

[*] Bearbeiten Sie die Verzeichnisberechtigungen manuell, sodass der Ordner von allen < /li>
Führen Sie die Anwendung als Administrator aus < /li>
Verschieben /> Löschen Sie die Datei und den Ordner ohne das rekursive Flag (so nacheinander)
[*] Löschen Sie alle 200 ms für 2 Sekunden

Alle diese Versuche haben das gleiche Ergebnis:
Die Datei wird gelöscht. Der Ordner bleibt um < /p>
Ich kann den Ordner manuell in der Datei löschen Der Explorer. Erstellen Sie ein Beispielprojekt, bei dem ich das Verhalten neu erstellen kann: < /p>
public partial class Form1 : Form
{
private static DirectoryInfo info;
private static string FILE_NAME = "bbb.txt";

public Form1()
{
InitializeComponent();
}

private void createFolder_Click(object sender, EventArgs e)
{
var currentDirectory = AppDomain.CurrentDomain.BaseDirectory;

var sourceFile = Path.Combine(currentDirectory, FILE_NAME);

if (!File.Exists(sourceFile))
{
Console.WriteLine("Error: Source file not found.");
return;
}

var oneDrivePath = Environment.GetEnvironmentVariable("OneDrive");

if (string.IsNullOrEmpty(oneDrivePath))
{
Console.WriteLine("Error: OneDrive environment variable is not set.");
return;
}

var newDirectory = Path.Combine(oneDrivePath, "Dokumente", "Test", Guid.NewGuid().ToString("N"));
info = Directory.CreateDirectory(newDirectory);

var destinationFile = Path.Combine(newDirectory, FILE_NAME);

File.Copy(sourceFile, destinationFile);

Console.WriteLine($"File copied successfully to: {destinationFile}");
}

private void deleteButton_Click(object sender, EventArgs e)
{
try
{
info.Delete(true);
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}
}
< /code>
Es handelt sich um eine grundlegende WinForms -Anwendung mit einer Schaltfläche Erstellen und Löschen. Die Datei handelt>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post