0

多くのユーザーがフル コントロールで多くのファイルを共有している Windows ネットワークがあります。システム内の全員が共有するフォルダーがあるため、別のシステムからマシン名 (run->\Servername) を使用してアクセスしようとすると、共有フォルダーが表示され、そのフォルダー内のファイルを開いたり書き込んだりできます。

しかし、私の要件は、ネットワークで開いているファイル(システム内)をすべて閉じることです。そこで、NetFileEnumを使用して開いているすべてのファイル ID をリストし、NetFileClose API を使用してそれらのファイルを閉じることができるようにしました。

しかし問題は、NetFileEnum が 111092900、-1100100090 などの無効なジャンク ID を返すため、別のマシンから閉じることができないことです。そのため、net file コマンドを使用してネットワークで開いているファイルをリストし、id を記録して、43 とします。関数呼び出しで id をハードコーディングしましたが、NetFileClose("Servername", 43);実行するとACCESS_DENIED_ERRORが発生しました。しかし、サーバー上で同じコードを実行すると、ファイルが正常に閉じられます。すべてのユーザーに共有の完全な許可を与えました。

しかし、なぜACCESS_DENIED_ERRORであり、なぜ NetFileEnum が無効な ID を返すのでしょうか? この API を機能させるために何かすることはありますか? これらの API を適切に使用して、ネットワークで開いているファイルを閉じるにはどうすればよいですか?

4

0 に答える 0