Elimina file di RecycleBin in csharp con il metodo FileSystem.DeleteFile di VB non funziona correttamente

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

Domanda

Ho un pezzo di codice che chiama il metodo DeleteFile nella classe Microsoft.VisualBasic.FileIO.FileSystem (nel Microsoft.VisualBasic montaggio), al fine di inviare il file nel Cestino invece di eliminarlo definitivamente. Questo codice è in un servizio Windows gestito e gira su una macchina Windows Server 2k8 (32-bit).

La linea in questione:

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

Naturalmente, ho "usando Microsoft.VisualBasic.FileIO;" in cima alla classe e ho verificato che il metodo chiamato è in realtà sulla classe FileSystem in quel namespace. Nella riga sopra mi riferisco a un "file" variabile locale - che è un FileInfo per un file locale (ad esempio, C: \ percorso \ a \ file.txt), di cui sono certo che esiste. L'applicazione ha il controllo completo sopra sia il file e la directory è in.

Questo sembra funzionare bene come il file sparisce dalla directory si trovava. Tuttavia, il file non viene visualizzato nel Cestino. Ho provato a ispezionare il C:. \ $ Recycle.Bin manualmente le cartelle come sospettavo il servizio di Windows in esecuzione in sessione 0 renderebbe finire in un diverso Cestino, ma tutti i cestini apparire vuoto

Qualcuno ha la minima idea di che cosa provoca questo comportamento?

Tra l'altro - la macchina non è sicuramente lo spazio libero sul disco in questione (o qualsiasi altra unità è per questo), e il file è molto piccolo (un paio di kilobyte, in modo che non superi il Cestino soglia).

È stato utile?

Soluzione

Si assume che il servizio è in esecuzione con un account utente diverso da quello del proprio (o uno degli account di servizio speciali).

Non credo che sia possibile per un utente di visualizzare il contenuto di cestino di un altro utente - anche se è possibile vedere alcune prove della loro esistenza all'interno del C:. \ Recycle.Bin cartella $


Se è in esecuzione con un altro account utente, provare a accedere al computer utilizzando tale account, e quindi controllare il cestino. Se è in esecuzione con un account di servizio (ad esempio Servizio locale, Servizio di rete o Sistema locale) che sta per essere più difficile.

Dato che i cestini sono separati, come hai intenzione di utilizzare il fatto che il file è in cestino comunque?

Altri suggerimenti

il problema potrebbe derivare dal utente che esegue il servizio, si potrebbe provare a modificare la politica utente che esegue o modificare l'utente che esegue.

Comunque, potrebbe anche provenire dal servizio che viene eseguito senza guscio, come il cestino dipendono dalla shell api. questo post sembrano confermare questo problema. Così si avrebbe bisogno di prendere un altro approccio per accesso guscio api dal vostro servizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top