1

問題があります。他のプロセスを開いたファイルがあり、このプロセスがCreateFile非ファイル共有で定義されています。次に、他のアプリケーションがあり、このファイルから同時にデータを読み取りたいのですが、どうすればよいですか。

最初のアプリケーションでファイル共有を変更できません。私はコンピュータ管理者の権利に到達することができます、私はシステムの変更を行うことができます、しかしこれがコードによって行われることができればおそらく「コード」ソリューションはこの問題に対してより良いでしょう。

誰か助けてもらえますか?

4

3 に答える 3

1

オプションの1つは、RawDisk製品を使用することです。これにより、システムのセキュリティ制限を回避し、排他的に開かれたファイルやアクセス権がないファイルを開くことができます。RawDisk自体のインストールには管理者権限が必要であるため、RawDiskを他のコンピューターへの侵入に使用することはできないことに注意してください。

もう1つのオプションは、バックアップAPI、つまり上記のBackupRead()WindowsAPI関数を使用することです。BackupAPIをグーグル検索すると、この関数の説明だけでなく、このバックアップAPIの使用に関係するものについてのユーザーからのコメントもいくつか得られます。

于 2010-09-26T07:54:07.487 に答える
1

EasyHookを使用してAPIをCreateFileルーチンにフックすると、実際には、コードはAPIをインターセプトし、dwShareModeパラメーターを変更してFILE_SHARE_READビット単位またはFILE_SHARE_WRITE ie(FILE_SHARE_READ | FILE_SHARE_WRITE)にし、元のフックを呼び出してCreateFileを許可します。正常に動作するには...

于 2010-09-26T01:26:01.157 に答える
1

十分な権限がある場合は、バックアップAPIを使用してください。それ以外の場合は、これらのフラグが理由で存在することに注意してください。誰かが共有を無効にした場合、それは無効になります。

電話をかけたいBackupRead場合、MSDNは次のことに注意します。

バックアップアプリケーションは、システムレベルのアクセス制御設定にアクセスできる必要があります。ACCESS_SYSTEM_SECURITYフラグは、CreateFileに渡されるdwDesiredAccessパラメータ値で指定する必要があります。CreateFileに渡される値。

CreateFileに渡されるパラメーター値。

于 2010-09-26T01:40:12.833 に答える