Datei löschen zu RecycleBin in csharp mit VB FileSystem.DeleteFile Methode funktioniert nicht richtig

StackOverflow https://stackoverflow.com/questions/4647612

Frage

Ich habe ein Stück Code für Sie, DeleteFile Methode in der Microsoft.VisualBasic.FileIO.FileSystem Klasse aufruft (in den Microsoft.VisualBasic Assembly), um die Datei in den Papierkorb zu senden es statt dauerhaft löschen. Dieser Code ist in einem verwalteten Windows-Dienst und läuft auf einer Windows Server 2k8 Maschine (32-Bit).

Die entsprechende Zeile:

FileSystem.DeleteFile(file.FullName, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);

Natürlich, ich habe „Microsoft.VisualBasic.FileIO verwendet;“ an der Spitze der Klasse und ich festgestellt, dass das Verfahren wirklich auf der Filesystem-Klasse in diesem Namensraum genannt wird, ist. In der obigen Linie verweise ich auf eine lokale Variable „Datei“ -, die für eine lokale Datei ein Fileinfo ist (sagen wir, C: \ path \ to \ file.txt), von denen ich sicher bin, dass es existiert. Die Anwendung verfügt über Vollzugriff sowohl über die Datei und das Verzeichnis es ist in.

Dies scheint gut funktionieren wie die Datei aus dem Verzeichnis verschwindet darin war. Allerdings ist die Datei zeigt, nicht in dem Papierkorb verschoben werden. Ich habe versucht, die C Inspektion:. \ $ Recycle.Bin Ordner manuell, wie ich den Windows-Dienst in Sitzung ausgeführt wird vermutet 0 würde es in einem anderen Papierkorb landen, aber alle die Papierkörbe leer erscheinen

Hat jemand eine Ahnung hat, was dieses Verhalten verursacht?

übrigens - die Maschine ist auf jeden Fall nicht aus freiem Speicherplatz auf dem Laufwerk in Frage (oder jedes anderes Laufwerk für diese Angelegenheit), und die Datei ist sehr klein (ein paar Kilobyte, so dass es nicht nicht überschreitet Papierkorb Schwelle).

War es hilfreich?

Lösung

Ich gehe davon aus Ihrem Dienst unter einem anderen Benutzerkonto ausgeführt wird als die eigene (oder eine der Sonderdienstkonto).

Ich glaube nicht, es möglich ist, für einen Benutzer, den Inhalt eines anderen Benutzers Papierkorb zu sehen - auch wenn Sie einige Beweise für ihre Existenz in der C sehen. \ $ Recycle.Bin Ordner


Wenn es unter einem anderen Benutzerkonto ausgeführt wird, versuchen, in die Maschine Anmeldung das Konto verwenden, und überprüfen Sie den Papierkorb. Wenn es unter einem Dienstkonto ausgeführt wird (zum Beispiel Service vor Ort, Netzwerkdienst oder Lokal System), es wird schwieriger sein.

Da die Papierkörbe sind getrennt, wie planen Sie sich die Tatsache zunutze zu machen, dass die Datei in den Papierkorb ist eigentlich?

Andere Tipps

das Problem von dem Benutzer auf die Ausführung Ihres Service kommen könnte, könnten Sie versuchen, die Ausführung von Benutzerrichtlinie zu ändern oder die Ausführung von Benutzer ändern.

Wie auch immer, es könnte auch aus dem Dienst kommen, ohne eine Shell ausgeführt wird, wie der Papierkorb auf der Schale api abhängen. diesen Beitrag scheint dieses Problem zu bestätigen. So müssten Sie einen anderen Ansatz zu ergreifen, um Zugang api von Ihrem Service-Shell.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top