アフィリエイト広告を利用しています

広告

posted by fanblog

2015年02月10日

いまさらながらの Mailslot 【続き】

前回は MailSlot を使うための基本構成を示したのだが、実際にやりたいことは、他のデスクトップ、多くは異なるセキュリティコンテキスト(つまりは異なるユーザなど)からも通知を受けたいということであった
そうすると、前回のサーバ側の実装では、同じユーザコンテキストからしか通知を受けれないということになってしまう
それを解決するのは、実は簡単で、セキュリティ属性(SECURITYP_ATTRIBUTES)を渡せばいいだけなのだった

改善したサーバ側の実装例
CDacl dacl;
dacl.AddAllowedAce(Sids::World(), FILE_ALL_ACCESS);
CSecurityDesc sd;
sd.SetDacl(dacl);
CSecurityAttributes sa(sd);

HANDLE g_hServer = CreateMailslot(SERVER_NAME, MESSAGE_SIZE, SERVER_TIMEOUT, &sa);


今回はコードを簡潔にするために ATL のセキュリティ関連テンプレートを利用してみた
ATL を使いたくなければ、地道に構造体を初期化して、セキュリティコンテキスト名から SID を求めて、などの作業が必要となる(わかってしまえば、それほどのコードではないのだが、自分はいつも一発では書けないので、面倒だと感じている)
これでめでたく当初の目的は果たせることになった
ただし、今回は Sids::World() を利用したが、セキュリティを考慮し、もっと限定的な SID を利用することも可能だし、そうすべきかもしれない




この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/3271123
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
ファン
検索
<< 2016年05月 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
最新記事
最新コメント
タグクラウド
カテゴリアーカイブ
プロフィール
いしちゃんさんの画像
いしちゃん
ブログ
プロフィール
日別アーカイブ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。