0

他の Windows アプリケーションが使用できる多くの静的データを保持できるように、Windows サービスでメモリ マップ ファイルを作成しようとしています。

私の問題は、サービスを開始すると、サービスがメモリマップファイルを簡単に読み書きできることです。ただし、Windows アプリはできません。ファイルが見つからないというエラーが表示されます。

同じクラスを使用してメモリ マップ ファイルの読み取りと書き込みを行うと、2 つの Windows アプリケーションで問題は発生しません。したがって、私はメモリ マップ ファイルの使用は正しいと信じていますが、他に何かがあると考えています。

アクセス制御を追加しようとしましたが、役に立ちません。それでも、ファイルが見つかりません。

確かに、私は Windows サービスの経験があまりありません。例外を書き込む単純なファイルを作成しようとしましたが、サービスからも作成されていません。アカウントに関しては、私は自分の Windows アカウントを使用しています (ローカル管理者権限は限られています)。

ユーザー アカウントに埋め込まれた資格情報を使用してデータベースにアクセスする必要があるため、Network Services アカウントは使用していません。

この時点で車輪を回転させ始めたので、どんなアイデアでも素晴らしいでしょう.

4

1 に答える 1

3

MMF 名の前に @"Global\" を追加する必要がある場合があります。新しいバージョンの Windows は、他のアプリとは異なるセッションでサービスを実行していると思います。

次の記事への参照を見ました: Windows のサービスとドライバーに対するセッション 0 分離の影響

Windows アプリを実行しているユーザー アカウントによっては、ローカル セキュリティ ポリシーの "グローバル オブジェクトの作成" を変更する必要がある場合もあります。

于 2013-08-02T18:16:36.370 に答える