0

Windowsサービスと通信する必要があるWinsockLSP(Layered Service Provider)DLLを作成しています。

通信は、メモリマップトファイルと同期用のイベントを使用して行われます。アプリケーションがサービスとして実行されていない場合はすべて正常に機能しますが、実行されている場合はイベントまたはファイルマッピングが見つかりません(OpenEventでERROR_FILE_NOT_FOUNDエラーが発生します)。

これは、サービスとして実行する場合、アプリケーションがSYSTEMユーザーとして実行され、LSPがローカルユーザーとして実行されるアプリケーションによってロードされるために発生する可能性があります。

これは適切なSECURITY_DESCRIPTORを使用することで解決できると思いますが、何に設定すればよいかわかりません。

これを機能させる方法について何かアイデアはありますか?

ありがとう、

4

1 に答える 1

0

OSによっては、セッションの問題になる場合があります。CreateEvent、CreateMemoryMappingなどのドキュメントをもう一度見ると、オブジェクト名のGLOBAL\プレフィックスに気付くでしょう。このプレフィックス(SESSION \ x \プレフィックスとともに)は、オブジェクトの可視性スコープを定義します。GLOBALプレフィックスはシステム全体で見られますが、名前にプレフィックスが含まれていないオブジェクトは、特定の(\ SESSIONプレフィックスが省略されている場合は現在の)セッションに対してローカルです。セッションはWindowsXPのターミナルサービスに表示され、Windows2003Server以降のOSに組み込まれました。

于 2011-06-28T16:06:05.537 に答える