VBのファイルシステムを使用して、csharpでリサイクルビンにファイルを削除します。

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

質問

Microsoft.visualbasic.fileio.filesystemクラス(Microsoft.VisualBasic Assembly)のDeleteFileメソッドを呼び出すコードがあります。このコードは管理されたWindowsサービスにあり、Win Server 2K8マシン(32ビット)で実行されます。

関連する行:

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

もちろん、「Microsoft.visualbasic.fileioを使用して」クラスの上部で、呼び出される方法が実際にその名前空間のファイルシステムクラスにあることを確認しました。上記の行では、ローカル変数の「ファイル」を参照します。これは、ローカルファイル(たとえば、c: path to file.txtなど)のファイルインフォです。アプリケーションは、ファイルとディレクトリの両方を完全に制御しています。

これは、ファイルが入っていたディレクトリから消えると正常に機能するように見えます。ただし、ファイルはリサイクルビンに表示されません。セッション0で実行されているWindowsサービスが別のリサイクルビンで終わるのではないかと疑っているため、C: $ Recycle.binフォルダーを手動で検査してみましたが、すべてのリサイクルビンは空に見えます。

誰かがこの行動を引き起こすものについての手がかりを持っていますか?

ちなみに、マシンは間違いなく問題のドライブ上の空きスペース(またはその他のドライブ)ではなく、ファイルが非常に小さい(キロバイトの2枚であるため、リサイクルビンのしきい値を超えない)。

役に立ちましたか?

解決

私はあなたのサービスがあなた自身(または特別なサービスアカウントのいずれか)とは異なるユーザーアカウントの下で実行されていると思います。

あるユーザーが別のユーザーのリサイクルビンの内容を表示できるとは思いません。


別のユーザーアカウントの下で実行されている場合は、そのアカウントを使用してマシンにログインしてから、リサイクルビンを確認してください。サービスアカウント(ローカルサービス、ネットワークサービス、ローカルシステムなど)の下で実行されている場合は、よりトリックになります。

リサイクルビンが別々であることを考えると、とにかくファイルがリサイクルビンにあるという事実をどのように利用することを計画していますか?

他のヒント

問題は、ユーザーがサービスを実行していることから生じる可能性があります。実行するユーザーポリシーを変更したり、実行しているユーザーを変更したりできますか。

とにかく、リサイクルビンはシェルAPIに依存するため、シェルなしで実行されるサービスからも発生する可能性があります。 この郵便受け この問題を確認しているようです。したがって、サービスからACCESシェルAPIに別のアプローチを取る必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top