<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Windows architecture</title><link>http://blogs.wankuma.com/tyappi/category/1100.aspx</link><description>Windows architecture</description><managingEditor>ちゃっぴ (tyappi@wankuma.com)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Adobe Reader X on Windows XP</title><link>http://blogs.wankuma.com/tyappi/archive/2010/11/21/195130.aspx</link><pubDate>Sun, 21 Nov 2010 18:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2010/11/21/195130.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/195130.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2010/11/21/195130.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/195130.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/195130.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2010/11/20/195086.aspx"&gt;Adobe Reader X&lt;/A&gt;, &lt;A href="http://blogs.wankuma.com/tyappi/archive/2010/11/21/195125.aspx"&gt;Restricting SID&lt;/A&gt; の続き。&lt;/P&gt; &lt;P&gt;Windows XP 上での Adobe Reader X はどのように access token を制限しているか実際に確認してみましょう。&lt;/P&gt; &lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/7e5f704bfeb8_DA88/AdobeReaderXProcessTreeeWindowsXP.png"&gt;&lt;IMG style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="AdobeReaderXProcessTreeeWindowsXP" border="0" alt="AdobeReaderXProcessTreeeWindowsXP" src="http://tyappi.wankuma.com/images/7e5f704bfeb8_DA88/AdobeReaderXProcessTreeeWindowsXP_thumb.png" width="244" height="98"&gt;&lt;/A&gt;&lt;/P&gt; &lt;P&gt;Process tree の構造は Windows 7 と変わりませんね。では access token はどうなっているか？ まずは親の方。&lt;/P&gt; &lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/7e5f704bfeb8_DA88/AdobeReaderXParentProcessAccessToken.png"&gt;&lt;IMG style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="AdobeReaderXParentProcessAccessToken" border="0" alt="AdobeReaderXParentProcessAccessToken" src="http://tyappi.wankuma.com/images/7e5f704bfeb8_DA88/AdobeReaderXParentProcessAccessToken_thumb.png" width="193" height="244"&gt;&lt;/A&gt;&lt;/P&gt; &lt;P&gt;Administrators に所属する user での結果ですが、全く filter されていません。つまり、この process の実行 account が有する権利が制限なく利用可能です。この process で動く code に脆弱性が存在した場合、死亡決定ですね。&lt;/P&gt; &lt;P&gt;次に子 process。&lt;/P&gt; &lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/7e5f704bfeb8_DA88/AdobeReaderXChildProcessAccessToken.png"&gt;&lt;IMG style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="AdobeReaderXChildProcessAccessToken" border="0" alt="AdobeReaderXChildProcessAccessToken" src="http://tyappi.wankuma.com/images/7e5f704bfeb8_DA88/AdobeReaderXChildProcessAccessToken_thumb.png" width="188" height="244"&gt;&lt;/A&gt;&lt;/P&gt; &lt;P&gt;かなり厳しく filter されていますね。Filter された token がどのように機能するかについては &lt;A href="http://blogs.wankuma.com/tyappi/archive/2010/11/21/195125.aspx"&gt;Restricting SID&lt;/A&gt; を参照していただくとして、結論としては下表のような token になります。&lt;/P&gt; &lt;TABLE border="1" cellSpacing="0" cellPadding="2" width="293"&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TH vAlign="top" width="277"&gt;SIDｓ&lt;/TH&gt; &lt;TH vAlign="top" width="14"&gt;Enable&lt;/TH&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;Logon SID (S-1-5-5-0-71174)&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;Everyone&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;Local&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;NT AUTHORITY\Authenticated Users&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;NT AUTHORITY\REMOTE INTERACTIVE LOGON&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;VIRTUALXP-17110\Debugger Users&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;VIRTUALXP-17110\なし&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;BUILTIN\Users&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;NT AUTHORITY\INTERACTIVE&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;BUILTIN\Administrators&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;VIRTUALXP-17110\XPMUser&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt; &lt;P&gt;要するに Everyone と BUILTIN\Users のみが有効な SID ということですね。&lt;/P&gt; &lt;P&gt;つまり、対象 rewouces の ACL で Everyone および BUILTIN\Users に対する許可の権利が与えられていないと access できないということです。&lt;/P&gt; &lt;P&gt;Windows XP の既定の ACL で Everyone および BUILTIN\Users が access 可能な resources の概要を下記に示します。&lt;/P&gt; &lt;TABLE border="1" cellSpacing="0" cellPadding="2" width="441"&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;Type&lt;/TD&gt; &lt;TH vAlign="top" width="277"&gt;Path&lt;/TH&gt; &lt;TH vAlign="top" width="107"&gt;Rights&lt;/TH&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;Drive root&lt;BR&gt;C:\ 等&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read &amp; Create New&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;%SystemRoot%&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read only&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;%ProgramFiles%&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read only&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;%UserProfile%&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;None&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;All Users Profile&lt;BR&gt;Ｃ:\Documents and Settings\All Users\&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read only&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;All Users Application Data&lt;BR&gt;Ｃ:\Documents and Settings\All Users\Application Data&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read &amp; Create new&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;File/Folder&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;共有ドキュメント&lt;BR&gt;Ｃ:\Documents and Settings\All Users\Documents&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read &amp; Create new&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;Registry&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;HKCR&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read only&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;Registry&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;HKLM&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read only&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="55"&gt;Registry&lt;/TD&gt; &lt;TD vAlign="top" width="277"&gt;HKCU&lt;/TD&gt; &lt;TD vAlign="top" width="107"&gt;Read only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt; &lt;P&gt;%UserProfile% への権限は制限されているものの drive root に独自に作成した folder や共有ドキュメントに置いた file 等は保護されないことになります。また、ACL を変更して Everyone や BUILTIN\Users を付け加えるなんてこともよく行われており、当然その resources も保護されません。&lt;/P&gt; &lt;P&gt;これに対し、Windows Vista 以降では Low IL を利用しており、これは resources SACL に Low mandatory level が存在するものしか access できません。&lt;/P&gt; &lt;P&gt;参考) &lt;A href="http://blogs.wankuma.com/tyappi/archive/2007/05/10/76172.aspx"&gt;Low integrity level&lt;/A&gt;、&lt;A href="http://blogs.wankuma.com/tyappi/archive/2007/04/25/73046.aspx"&gt;Integrity level を ACE として folder へ設定可能&lt;/A&gt;&lt;/P&gt; &lt;P&gt;Low mandatory level が設定されている場所は %UserProile%\AppData\LocalLow 等の非常に限定的な場所にのみ付与されているため、Windows XP で Adobe Reader が利用している &lt;A title="Restricted Tokens" href="http://msdn2.microsoft.com/en-us/library/aa379316.aspx"&gt;Restricted Token&lt;/A&gt; とは格段に制限が厳しいです。&lt;/P&gt; &lt;P&gt;Windows XP でも &lt;A title="Restricted Tokens" href="http://msdn2.microsoft.com/en-us/library/aa379316.aspx"&gt;Restricted Token&lt;/A&gt; を利用することにより、かなりの security 向上が見込めますが、Windows Vista 以降では IL のおかげで遥かに高い保護が行えます。どうしようもない理由で Windows XP を使い続けなければならないならともかく、さっさと Windows Vista 以降の OS に乗り換えましょう。それから、UAC は絶対に無効化しない。これ重要。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/195130.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Restricting SID</title><link>http://blogs.wankuma.com/tyappi/archive/2010/11/21/195125.aspx</link><pubDate>Sun, 21 Nov 2010 17:26:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2010/11/21/195125.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/195125.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2010/11/21/195125.aspx#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/195125.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/195125.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2010/11/20/195086.aspx"&gt;Adobe Reader X&lt;/A&gt; に関して &lt;A&gt;NyaRuRu&lt;/A&gt; さんから突っ込みをいただいたので、Windows XP 上での Adobe Reader X について書こうと思ったのですが、その前に restrictied token について説明する必要があるため先に説明します。&lt;/P&gt; &lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446583.aspx"&gt;CreateRestrictedToken&lt;/A&gt; 関数で作成する &lt;A title="Restricted Tokens" href="http://msdn2.microsoft.com/en-us/library/aa379316.aspx"&gt;Restricted Token&lt;/A&gt; (制限トークン) での SID 制限の方法には deny-only SID (SID の無効化) と restricting SID (制限付き SID) の 2 種類が存在します。&lt;/P&gt; &lt;P&gt;まずは簡単な deny-only SID の方から。Deny-only SID とは、対象の SID を無効化します。無効化なので ACL に該当する SID が存在したとしても、無かったものとして扱われます。例えば、管理者権限を無効化するために BUILTIN\Administrators group SID を消しこむといった用途で使われますね。UAC の medium IL での管理者権限削除はこれを利用することによって実現されています。&lt;A href="http://msdn.microsoft.com/en-us/library/aa446583.aspx"&gt;CreateRestrictedToken&lt;/A&gt; 関数では第 3 引数 DisableSidCount、第 4 引数 SidToDisable に対応します。&lt;/P&gt; &lt;P&gt;次にちょっとわかりにくい restricting SID の方。こちらはなんなのかというと Restrited と mark された SID のみが利用可能であるということです。&lt;/P&gt; &lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/Restricted-SID_E3BE/ProtectedMyComputerAccessToken.png"&gt;&lt;IMG style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="ProtectedMyComputerAccessToken" border="0" alt="ProtectedMyComputerAccessToken" src="http://tyappi.wankuma.com/images/Restricted-SID_E3BE/ProtectedMyComputerAccessToken_thumb.png" width="164" height="244"&gt;&lt;/A&gt;&lt;/P&gt; &lt;P&gt;上は Windows XP mode でメモ帳 (notepad.exe) を「別のユーザーとして実行」→「許可されていないプログラムの動作からコンピュータとデータを保護する」を有効化して「現在のユーザー」で起動した aceess token です。&lt;/P&gt; &lt;P&gt;BUILTIN\Administrators が Deny されており、ほとんどの SIDs に Restricted flag がついているのが確認できます。それから NT AUTHORITY\RESTRICTED という見慣れない SID が存在しますね。&lt;/P&gt; &lt;P&gt;この状況では下記のように access check が行われます。&lt;/P&gt; &lt;OL&gt; &lt;LI&gt;ACL に BUILTIN\Administrators が含まれていても deny-only であるため無視される  &lt;LI&gt;restricting SIDs 以外の SIDs を確認し、ACL に含まれる SID に対応した許可の ACE が含まれる場合のみ次に進む  &lt;LI&gt;NT AUTHORITY\RESTRICTED SID が付与されている &lt;A title="Restricted Tokens" href="http://msdn2.microsoft.com/en-us/library/aa379316.aspx"&gt;Restricted Token&lt;/A&gt; であるため、restricting SIDs を照合して restricting SIDs が存在するもののみ access が許可される&lt;/LI&gt;&lt;/OL&gt; &lt;P&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc783557.aspx"&gt;How Access Tokens Work&lt;/A&gt;&lt;/P&gt; &lt;P&gt;ここで注意してほしいのは、この process の実行 user である VIRTUALXP-17110\XPMUser の restircting SID が含まれていないことです。つまり、VIRTUALXP-17110\XPMUser の権限が無効化されているということになります。&lt;/P&gt; &lt;P&gt;わかり易く整理すると下表のような感じです。&lt;/P&gt; &lt;TABLE border="1" cellSpacing="0" cellPadding="2" width="293"&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TH vAlign="top" width="277"&gt;SIDｓ&lt;/TH&gt; &lt;TH vAlign="top" width="14"&gt;Enable&lt;/TH&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;Logon SID (S-1-5-5-0-71174)&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;Everyone&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;Local&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;NT AUTHORITY\Authenticated Users&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;NT AUTHORITY\REMOTE INTERACTIVE LOGON&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;VIRTUALXP-17110\Debugger Users&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;VIRTUALXP-17110\なし&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;BUILTIN\Users&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;NT AUTHORITY\INTERACTIVE&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Enabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;BUILTIN\Administrators&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt; &lt;TR&gt; &lt;TD vAlign="top" width="277"&gt;VIRTUALXP-17110\XPMUser&lt;/TD&gt; &lt;TD vAlign="top" width="14"&gt;Disabled&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt; &lt;P&gt;実行 user である VIRTUALXP-17110\XPMUser の SID が利用できないのがミソですね。この影響により、この SID で許可されている %UserProfile% や HKCU 配下のすべての権限が消滅します。&lt;/P&gt; &lt;P&gt;なお、restricting SID は &lt;A href="http://msdn.microsoft.com/en-us/library/aa446583.aspx"&gt;CreateRestrictedToken&lt;/A&gt; 関数の第 7 引数 RestrictedSidCount、第 8 引数 SidsToRestrict を利用して作成します。&lt;/P&gt; &lt;P&gt;&lt;A href="http://blogs.msdn.com/b/aaron_margosis/archive/2004/06/23/163229.aspx"&gt;"RunAs" basic (and intermediate) topics&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/b/aaron_margosis/archive/2004/09/10/227727.aspx"&gt;Running restricted -- What does the "protect my computer" option mean?&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/195125.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Windows Event Log の ACL 設定方法</title><link>http://blogs.wankuma.com/tyappi/archive/2009/09/11/181117.aspx</link><pubDate>Fri, 11 Sep 2009 01:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/09/11/181117.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/181117.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/09/11/181117.aspx#Feedback</comments><slash:comments>65</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/181117.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/181117.aspx</trackback:ping><description>&lt;P&gt;下記の続き&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2008/12/26/164952.aspx"&gt;Windows Event Log の ACL&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2007/12/04/111599.aspx"&gt;Event log の security&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa385780.aspx"&gt;Windows Event Log&lt;/A&gt; の ACL を簡単に取得する方法が判明しました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa385780.aspx"&gt;Windows Event Log&lt;/A&gt; は Windows Vista 以降で追加されたものですが、Windows Vista 以降では &lt;A href="http://msdn.microsoft.com/en-us/library/aa385780.aspx"&gt;Windows Event Log&lt;/A&gt; を管理する command utility &amp;#8220;&lt;A href="http://technet.microsoft.com/library/cc732848.aspx"&gt;Wevtutil.exe&lt;/A&gt;&amp;#8221; が追加されています。これを利用することで、下記のようにして簡単に ACL を取得することができます。&lt;/P&gt;&lt;PRE&gt;&amp;gt;&lt;KBD&gt;wevtutil.exe gl "Application"&lt;/KBD&gt;
&lt;SAMP&gt;name: application
enabled: true
type: Admin
owningPublisher:
isolation: Application
channelAccess: O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU
)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)(A;;0x3;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)
logging:
  logFileName: %SystemRoot%\System32\Winevt\Logs\application.evtx
  retention: false
  autoBackup: false
  maxSize: 20971520
publishing:&lt;/SAMP&gt;&lt;/PRE&gt;
&lt;P&gt;"channelAccess" に表示されている &lt;A href="http://msdn.microsoft.com/en-us/library/aa379567.aspx"&gt;SDDL&lt;/A&gt; が ACL ですね。&lt;/P&gt;
&lt;P&gt;設定は下記のようにして行います。&lt;/P&gt;&lt;PRE&gt;&amp;gt;&lt;KBD&gt;wevtutil.exe sl "Application" /ca:"&lt;VAR&gt;%SDDL%&lt;/VAR&gt;"&lt;/KBD&gt;&lt;/PRE&gt;
&lt;P&gt;"&lt;VAR&gt;%SDDL%&lt;/VAR&gt;" には設定する ACL を &lt;A href="http://msdn.microsoft.com/en-us/library/aa379567.aspx"&gt;SDDL&lt;/A&gt; 形式にて指定してください。&lt;/P&gt;
&lt;P&gt;さて、この設定はどこに施されるのでしょう？&lt;/P&gt;
&lt;P&gt;確認したところ、application log の場合旧来と同じく下記に設定されることが確認できました。&lt;/P&gt;
&lt;P&gt;HKLM\System\CurrentControlSet\Services\Eventlog\Application\CustomSD&lt;/P&gt;
&lt;P&gt;Vista 以降で追加された channel に関しては下記ですね。&lt;/P&gt;
&lt;P&gt;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\&lt;VAR&gt;%ChannelName%&lt;/VAR&gt;\ChannelAccess&lt;/P&gt;
&lt;P&gt;ということで、旧来から存在する event log に関しては設定個所は同じであることがわかりました。&lt;/P&gt;
&lt;P&gt;なお、command line utility は紹介しましたが、API はどうなのかというと存在するようです。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa385430.aspx"&gt;EvtOpenChannelConfig Function&lt;/A&gt; で &lt;A href="http://msdn.microsoft.com/en-us/library/aa385782.aspx"&gt;EVT_HANDLE&lt;/A&gt; 取得して、&lt;A href="http://msdn.microsoft.com/en-us/library/aa385362.aspx"&gt;EvtGetChannelConfigProperty Function&lt;/A&gt; に &lt;A href="http://msdn.microsoft.com/en-us/library/aa385499.aspx"&gt;EVT_CHANNEL_CONFIG_PROPERTY_ID Enumeration&lt;/A&gt; の EvtChannelConfigAccess を指定して呼び出せばよさげですね。&lt;/P&gt;
&lt;P&gt;設定は &lt;A href="http://msdn.microsoft.com/en-us/library/aa385782.aspx"&gt;EVT_HANDLE&lt;/A&gt; 取得した後に &lt;A href="http://msdn.microsoft.com/en-us/library/aa385484.aspx"&gt;EvtSetChannelConfigProperty Function&lt;/A&gt; で設定して &lt;A href="http://msdn.microsoft.com/en-us/library/aa385477.aspx"&gt;EvtSaveChannelConfig Function&lt;/A&gt; で保存。&lt;/P&gt;
&lt;P&gt;最後に忘れちゃいけない後始末ってことで、&lt;A href="http://msdn.microsoft.com/en-us/library/aa385344.aspx"&gt;EvtClose Function&lt;/A&gt; 呼んどきましょ。&lt;/P&gt;
&lt;P&gt;多分これでいけると思います。時間あるときに検証してみます。&lt;/P&gt;
&lt;P&gt;&amp;lt;追記&amp;gt;Sample ありました。&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd996924.aspx"&gt;Getting and Setting a Channel's Configuration Properties&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/181117.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>アプリケーション開発者向け Microsoft&amp;reg; Windows 7 対応アプリケーションの互換性</title><link>http://blogs.wankuma.com/tyappi/archive/2009/06/27/176692.aspx</link><pubDate>Sat, 27 Jun 2009 22:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/06/27/176692.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/176692.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/06/27/176692.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/176692.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/176692.aspx</trackback:ping><description>&lt;P&gt;Session 資料の調査をしていたら、こんな資料見つけました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/windows/dd819177.aspx#01"&gt;アプリケーション開発者向け MicrosoftR Windows 7 対応アプリケーションの互換性&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;開発者必見ですね。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/176692.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>すべての user で初期設定を統一化する方法</title><link>http://blogs.wankuma.com/tyappi/archive/2009/03/15/169725.aspx</link><pubDate>Sun, 15 Mar 2009 17:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/03/15/169725.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/169725.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/03/15/169725.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/169725.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/169725.aspx</trackback:ping><description>&lt;P&gt;Test でよくやることですが、新しい user を作っては試験しては壊し、作っては試験しては壊しってやりますよね。また、security 確保のため、一人で複数 account を使い分けるというのもありますね。その時、ガリガリ costomize していると、いちいち設定変更するのが面倒くさくてかないません。&lt;/P&gt;
&lt;P&gt;というわけで、新しい user profile を作成したときでも costomize された状態にする方法を紹介します。&lt;/P&gt;
&lt;P&gt;基本は下記で説明されている手順になります。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/319974/"&gt;カスタマイズしたデフォルトのユーザー プロファイルを作成する方法&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Windows Vista 以降では default user profile の path が "%USERPROFILE%\Default" に変更になっている以外、大きな違いはありません。&lt;/P&gt;
&lt;P&gt;この方法を使ってもいいのですが、user profile を丸ごと copy することになるため、不要な設定がいろいろ入ってしまいます。そこで、直接 default user profile の registry を編集する方法をとります。&lt;/P&gt;
&lt;P&gt;Default user profile の &lt;A href="http://msdn.microsoft.com/en-us/library/ms724877.aspx"&gt;hive&lt;/A&gt; は既定で読み込まれていないため、まずこれを load する必要があります。&lt;/P&gt;
&lt;P&gt;Registry Editor (regedit.exe) を開き、tree から "HKEY_USERS" を選択し、[ファイル] - [ハイブの読み込み] を実行。&lt;/P&gt;
&lt;P&gt;[ハイブの読み込み] dialog box にて default user profile &lt;A href="http://msdn.microsoft.com/en-us/library/ms724877.aspx"&gt;hive&lt;/A&gt; の path を指定。&lt;/P&gt;
&lt;P&gt;これで、default user profile の registry を好き勝手にいじる準備ができました。&lt;/P&gt;
&lt;P&gt;後は、好きなように costomize してください。&lt;/P&gt;
&lt;P&gt;ただ、忘れていけないのは作業が終わったら必ず hive を unload すること。ちゃんと unload しないといつまでたっても unload されずに警告が上がります。&lt;/P&gt;
&lt;P&gt;GUI での操作方法を示しましたが、command からも可能です。&lt;A href="http://technet.microsoft.com/en-us/library/cc732643.aspx"&gt;Reg.exe&lt;/A&gt; に &lt;A href="http://technet.microsoft.com/en-us/library/cc742053.aspx"&gt;load&lt;/A&gt;, &lt;A href="http://technet.microsoft.com/en-us/library/cc742043.aspx"&gt;unload&lt;/A&gt; という option があるので、これを利用して batch file 等で自動化可能ですね。&lt;/P&gt;
&lt;P&gt;まあ、そんなところで。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/169725.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Adobe Reader 9.x の Java Script を無効化する方法</title><link>http://blogs.wankuma.com/tyappi/archive/2009/03/15/169723.aspx</link><pubDate>Sun, 15 Mar 2009 16:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/03/15/169723.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/169723.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/03/15/169723.aspx#Feedback</comments><slash:comments>77</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/169723.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/169723.aspx</trackback:ping><description>&lt;P&gt;先週 Adobe Reader 9.1 が release され &lt;A href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0658"&gt;CVE-2009-0658&lt;/A&gt; の問題が修正されました。ただ、Adobe Reader で発見された過去の脆弱性の中で Acrobat JavaScript に関わるものは結構な数が存在します。ぶっちゃけた話、Adobe Reader を利用している user の中で Acrobat JavaScript を利用している user の割合はごく少数なので、一般的には Acrobat JavaScript を無効にしておくことに越したこと無いと思います。&lt;/P&gt;
&lt;P&gt;GUI では [編集] - [環境設定] で表示された「環境設定」画面にて分類「JavaScript」の項目「Acrobat JavaScript を使用」を無効にします。ただ、user 毎の設定となるため user が多く存在すると GUI では適用が面倒です。&lt;/P&gt;
&lt;P&gt;そこで、GUI を利用せず適用する方法。「Acrobat JavaScript を使用」は下記 registry entry を変更することで切り替えられます。&lt;/P&gt;
&lt;P&gt;HKCU\Software\Adobe\Acrobat Reader\9.0\JSPrefs&lt;BR&gt;REG_DWORD bEnableJS 0:無効、1:有効&lt;/P&gt;
&lt;P&gt;Domain 環境であれば custom group policy (拡張子 adm, admx) を作成するのがいいですね。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/225087/"&gt;システム ポリシー エディタで使用するカスタム ADM ファイルの記述方法&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/918239/"&gt;カスタムの .adm および .admx 管理用テンプレート ファイルを作成して Internet Explorer 7.0 の保護モード用の昇格ポリシーを提供する方法&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc779567.aspx"&gt;Using Administrative Template Files with Registry-Based Group Policy&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/ja-jp/library/cc772475.aspx"&gt;Comparing ADM and ADMX Syntax&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/ja-jp/library/cc770905.aspx"&gt;Creating a Custom Base ADMX File&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/ja-jp/library/cc771659.aspx"&gt;ADMX syntax&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=b0628355-baa2-4565-80a4-467245db9e28&amp;amp;displaylang=en"&gt;Group Policy ADMX Syntax Reference Guide&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Adobe 社が group policy template 用意してくれればこんな面倒なことしなくても、管理者楽なのに。。。&lt;/P&gt;
&lt;P&gt;Domain 環境でない場合、効率悪いですが &lt;A href="http://technet.microsoft.com/ja-jp/library/cc740163.aspx"&gt;logon script&lt;/A&gt; で毎回更新するとかありますね。Script はこんなので十分。&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;reg.exe add "HKCU\Software\Adobe\Acrobat Reader\9.0\JSPrefs" /v "bEnableJS" /t "REG_DWORD" /d 0 /f&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;他の方法としては default user profile (%USERPROFILE%\Default\NTUser.dat) を直接変更する方法があります。こちらは、user profile の作成時のみ有効ですね。&lt;/P&gt;
&lt;P&gt;これらの方法は Adobe Reader に限らず広く有効な方法なので、管理を行う人は覚えておくことに越したことないでしょう。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/169723.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>UAC 環境下で制限された file への Zone ID 変更操作は昇格されない</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/12/168006.aspx</link><pubDate>Thu, 12 Feb 2009 10:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/12/168006.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/168006.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/12/168006.aspx#Feedback</comments><slash:comments>333</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/168006.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/168006.aspx</trackback:ping><description>&lt;P&gt;Windows XP SP2 からの仕様変更で Internet Explorer 等対応した application から download された file には NTFS &lt;A href="http://msdn2.microsoft.com/en-us/library/aa364404.aspx"&gt;file stream&lt;/A&gt; に zone identifer が保存され、それによって警告が表示されたり、設定によっては問答無用で実行ができなかったりします。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/e904ed0faae8.png"&gt;&lt;IMG title="開いているファイル - セキュリティの警告" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=150 alt="開いているファイル - セキュリティの警告" src="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/_thumb.png" width=240 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;これを file 毎に個別に解除するには、対象 file の property で &amp;lt;ブロックの解除&amp;gt; を実行します。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/WindowClippings.exe.png"&gt;&lt;IMG title=WindowClippings.exeのプロパティ style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=238 alt=WindowClippings.exeのプロパティ src="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/WindowClippings.exe_thumb.png" width=240 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;ところが、UAC 環境下で対象 file への書き込みが制限されている場合には、&amp;lt;ブロックの解除&amp;gt; を実行しても設定変更できないんです。何回やっても何回やっても倒せない。。。&lt;/P&gt;
&lt;P&gt;回避策としては、別の書き込み可能な folder に一度移動させてから設定変更し、戻してやるとか。めんどくさー！&lt;/P&gt;
&lt;P&gt;同じ property page にある「読み取り専用」とか「隠しファイル」を変更した場合には、このような dialog が表示され問題無く変更できます。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/ea6ddfca98dc.png"&gt;&lt;IMG title=アクセス拒否 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=125 alt=アクセス拒否 src="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/_thumb_3.png" width=240 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;ブロックの解除&amp;gt; も同様に昇格するように修正するべきではないでしょうか？ ちなみに Windows 7 beta でも変更されていないです。&lt;/P&gt;
&lt;P&gt;ところで、複数の file をまとめて解除したいという要望は結構存在すると思います。そういうときには &lt;A href="http://technet.microsoft.com/ja-jp/sysinternals/default.aspx"&gt;Windows Sysinternals&lt;/A&gt; の &lt;A href="http://technet.microsoft.com/ja-jp/sysinternals/bb897440.aspx"&gt;Streams&lt;/A&gt; を利用しましょう。&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;Streams.exe -s -d "%TARGET_FOLDER_PATH%"&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/StreamsExeSample.png"&gt;&lt;IMG title="Streams.exe Sample" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=174 alt="Streams.exe Sample" src="http://tyappi.wankuma.com/images/UACfileZoneID_2B42/StreamsExeSample_thumb.png" width=240 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;上記のような感じです。&lt;/P&gt;
&lt;P&gt;&amp;lt;参考&amp;gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/883260/"&gt;Windows XP SP2 の添付ファイル マネージャの動作について&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/884251/"&gt;インターネットからダウンロードしたファイルを実行したときに表示されるセキュリティの警告画面と、警告の解除方法&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms537029.aspx"&gt;Persistent Zone Identifier Object&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2007/08/26/91872.aspx"&gt;File Streams ってなんだろう？&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/168006.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>4GT に対応した applications を作成する方法</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/08/167756.aspx</link><pubDate>Sun, 08 Feb 2009 23:52:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/08/167756.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/167756.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/08/167756.aspx#Feedback</comments><slash:comments>114</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/167756.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/167756.aspx</trackback:ping><description>&lt;P&gt;32 bit Windows の boot 設定で applicatrions に対して 2GB を超える memory を割り当てる方法 (&lt;A href="http://technet.microsoft.com/en-us/library/cc778496.aspx"&gt;4GT&lt;/A&gt;) として "&lt;A href="http://msdn.microsoft.com/en-us/library/ms791558.aspx"&gt;/3GB&lt;/A&gt;", "&lt;A href="http://msdn.microsoft.com/en-us/library/ms791558.aspx"&gt;/USERVA&lt;/A&gt;", "&lt;A href="http://msdn.microsoft.com/en-us/library/aa906211.aspx"&gt;INCREASEUSERVA&lt;/A&gt;" なんてものがありますが、これを生かすためには applications 側での対応が必要です。&lt;/P&gt;
&lt;P&gt;具体的には &lt;A href="http://msdn.microsoft.com/en-us/library/ms809762.aspx"&gt;PE header&lt;/A&gt; に "LARGEADDRESSAWARE" を設定する必要があります。&lt;/P&gt;
&lt;P&gt;VC++ では &lt;A href="http://msdn.microsoft.com/ja-jp/library/y0zzbyt4.aspx"&gt;linker option&lt;/A&gt; に "&lt;A href="http://msdn.microsoft.com/ja-jp/library/wz223b1z.aspx"&gt;/LARGEADDRESSAWARE&lt;/A&gt;" を指定すればいいだけですね。&lt;/P&gt;
&lt;P&gt;ですが、VB.NET や C# では build した後生成された binary を変更する必要があります。その際利用するのは "&lt;A href="http://msdn.microsoft.com/ja-jp/library/xd3shwhf.aspx"&gt;editbin.exe&lt;/A&gt;" です。&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;"editbin.exe" /LARGEADDRESSAWARE "%TARGET_PATH%"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;#8221;%TARGET_PATH%" には生成された binary の path が入ります。あと、「Visual Studio 2008 コマンド プロンプト」を実行したときに追加される path があらかじめ通っていないと下記のような error が発生するので注意が必要ですね。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/4GTapplications_14F9B/LinkerErrorMspdb80.dll.png"&gt;&lt;IMG title="Linker Error image " style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=107 alt="Linker Error image " src="http://tyappi.wankuma.com/images/4GTapplications_14F9B/LinkerErrorMspdb80.dll_thumb.png" width=244 border=0 ? 0xC0000135 code exit with mspdb80.dll?&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;毎回 command line 叩いてもいいんですが、面倒なので自動化しましょう。&lt;/P&gt;
&lt;P&gt;VB.NET, C# ともに build 終了後に実行する command line を指定することができるのでこれを利用します。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/4GTapplications_14F9B/CommandLineAfterBuild.png"&gt;&lt;IMG title="After build command line" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=172 alt="After build command line" src="http://tyappi.wankuma.com/images/4GTapplications_14F9B/CommandLineAfterBuild_thumb.png" width=244 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;入力するのは下記です。&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;SET PATH=%PATH%;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\x86_amd64;C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 9.0\VC\VCPackages
"editbin.exe" /LARGEADDRESSAWARE "$(TargetPath)"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;環境変数 "%PATH%" を再定義していますが、追加しているのは下記 file の 25 行目に書かれているものです。&lt;/P&gt;
&lt;P&gt;"%PROGRAMFILES%\Microsoft Visual Studio 9.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat"&lt;/P&gt;
&lt;P&gt;正常に設定されたかを確認するには、"&lt;A href="http://msdn.microsoft.com/ja-jp/library/c1h23y6c.aspx"&gt;dumpbin.exe&lt;/A&gt;" を利用します。「Visual Studio 2008 コマンド プロンプト」から下記を実行しましょう。&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;"dumpbin.exe" /headers "%TARGET_PATH%"

PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
             14C machine (x86)
               3 number of sections
        498EE40E time date stamp Sun Feb 08 22:54:22 2009
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             122 characteristics
                   Executable
                   Application can handle large (&amp;gt;2GB) addresses
                   32 bit word machine&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;上記のように "Application can handle large (&amp;gt;2GB) addresses" と表示されれば成功です。&lt;/P&gt;
&lt;P&gt;とりあえず、これで 2 GB を超える memory を扱えることができますが、1 つの process で &lt;A href="http://technet.microsoft.com/en-us/library/cc778496.aspx"&gt;4GT&lt;/A&gt; で設定した値を超える memory を利用することはできません。&lt;A href="http://technet.microsoft.com/en-us/library/cc778496.aspx"&gt;4GT&lt;/A&gt; で設定した値を超える必要があれば&amp;nbsp; &lt;A href="http://msdn.microsoft.com/en-us/library/aa366527.aspx"&gt;AWE&lt;/A&gt; を利用することになります。&lt;/P&gt;
&lt;P&gt;まあ、そんなことするくらいなら、ぶっちゃけ 64 bit OS 使いましょう。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/167756.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Windows Installer で配置する resources の DACL を変更する方法</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167617.aspx</link><pubDate>Fri, 06 Feb 2009 19:20:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167617.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/167617.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167617.aspx#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/167617.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/167617.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx"&gt;すべての user で扱う file の配置場所&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2009/02/06/167592.aspx"&gt;Visual Studio Setup Project で %PROGRAMDATA% へ file を配置する方法&lt;/A&gt; の続き&lt;/P&gt;
&lt;P&gt;無事 "%PROGRAMDATA%" に resources を配置することは出来ましたが、すべての user で変更可能であるという要件はこれだけでは満たせません。&lt;/P&gt;
&lt;P&gt;ということで、installer で対象 resources の &lt;A href="http://msdn.microsoft.com/en-us/library/aa374872.aspx"&gt;DACL&lt;/A&gt; を変更する必要があるのですが、その一つの方法をば。&lt;/P&gt;
&lt;P&gt;Windows Installer database には &lt;A href="http://msdn.microsoft.com/en-us/library/aa369774.aspx"&gt;LockPermissions Table&lt;/A&gt; というものがあり、こちらに追加することで任意の resources の &lt;A href="http://msdn.microsoft.com/en-us/library/aa374872.aspx"&gt;DACL&lt;/A&gt; を変更することができます。 &lt;/P&gt;
&lt;P&gt;ただ、Visual Studio 2008 の Setup Project には &lt;A href="http://msdn.microsoft.com/en-us/library/aa369774.aspx"&gt;LockPermissions Table&lt;/A&gt; を編集する UI を持っていませんので、MSI の作成後 &lt;A href="http://msdn.microsoft.com/en-us/library/aa370557.aspx"&gt;ORCA&lt;/A&gt; や scripts 等で Windows Installer database を編集する必要があります。今回は &lt;A href="http://msdn.microsoft.com/en-us/library/aa370557.aspx"&gt;ORCA&lt;/A&gt; を利用した方法を説明します。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa370557.aspx"&gt;ORCA&lt;/A&gt; は Visual Studio 2008 とともに install されないため、手動で install する必要があります。私の環境では Microsoft SDK v6.0A の installed folder 配下の "bin" folder に "Orca.Msi" が存在しました。また、&lt;A href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=6A35AC14-2626-4846-BB51-DDCE49D6FFB6&amp;amp;displaylang=ja"&gt;Windows Installer 最新 version 4.5 の SDK&lt;/A&gt; にも最新の "Orca.Msi" が含まれているので、そちらを利用してもいいでしょう。どちらにしろ、main の application install 後 "Orca.Msi" を手動で実行してやる必要があるので注意が必要です。&lt;/P&gt;
&lt;P&gt;"Orca.Msi" の install が完了したら、&lt;A href="http://msdn.microsoft.com/en-us/library/aa370557.aspx"&gt;ORCA&lt;/A&gt; を起動し Visual Studio Setup Project で作成した MSI file を開きます。&lt;/P&gt;
&lt;P&gt;今回 sample として用意した MSI file は "%PROGRAMDATA%" を "COMMONAPPDATA" として定義した folder 配下に "Test" という sub folder を作成するというものです。これから、この "Test" folder の DACL を変更します。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/WindowsInstallerresourcesDACL_10F94/OrcaDirectoryTable.png"&gt;&lt;IMG title=OrcaDirectoryTable style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=79 alt=OrcaDirectoryTable src="http://tyappi.wankuma.com/images/WindowsInstallerresourcesDACL_10F94/OrcaDirectoryTable_thumb.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;上記画像は &lt;A href="http://msdn.microsoft.com/en-us/library/aa370557.aspx"&gt;ORCA&lt;/A&gt; で spamle の MSI file の &lt;A href="http://msdn.microsoft.com/en-us/library/aa368295.aspx"&gt;Directory Table&lt;/A&gt; を表示したものです。3 行目の directory "_009F8BF9D3EC4C278D0F060093FC80E8" が "Test" folder です。今回、問答無用で folder を作成するように設定しましたので、同様の entry が &lt;A href="http://msdn.microsoft.com/en-us/library/aa368053.aspx"&gt;CreateFolder Table&lt;/A&gt; にも存在します。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/WindowsInstallerresourcesDACL_10F94/image.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=79 alt=image src="http://tyappi.wankuma.com/images/WindowsInstallerresourcesDACL_10F94/image_thumb.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;それでは、&lt;A href="http://msdn.microsoft.com/en-us/library/aa369774.aspx"&gt;LockPermissions Table&lt;/A&gt; を覗いてみましょう。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/WindowsInstallerresourcesDACL_10F94/OrcaLockPermissions01.png"&gt;&lt;IMG title=OrcaLockPermissions01 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=84 alt=OrcaLockPermissions01 src="http://tyappi.wankuma.com/images/WindowsInstallerresourcesDACL_10F94/OrcaLockPermissions01_thumb.png" width=244 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;何もないですね。列が 5 つ存在します。それぞれの役割は下記。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Column&lt;/TH&gt;
&lt;TH&gt;Description&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;LockObject&lt;/TD&gt;
&lt;TD&gt;対象 object の primary key を指定&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Table&lt;/TD&gt;
&lt;TD&gt;対象 objcet が存在する table name を指定&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa368596.aspx"&gt;File&lt;/A&gt;, &lt;A href="http://msdn.microsoft.com/en-us/library/aa371168.aspx"&gt;Registry&lt;/A&gt;, &lt;A href="http://msdn.microsoft.com/en-us/library/aa368053.aspx"&gt;CreateFolder&lt;/A&gt; から選択&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Domain&lt;/TD&gt;
&lt;TD&gt;Domain name を指定 (省略可)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;User&lt;/TD&gt;
&lt;TD&gt;User name を指定&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Permission&lt;/TD&gt;
&lt;TD&gt;許可する &lt;A href="http://msdn.microsoft.com/en-us/library/ms790780.aspx"&gt;access mask&lt;/A&gt; (32 bit 符号付き整数) を 10 進表記で指定 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;さて、それでは実際に試してみましょう。&lt;/P&gt;
&lt;P&gt;今回対象 folder に対し下記のような &lt;A href="http://msdn.microsoft.com/en-us/library/aa374872.aspx"&gt;DACL&lt;/A&gt; を付与します。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Domain&lt;/TH&gt;
&lt;TH&gt;User&lt;/TH&gt;
&lt;TH&gt;Access Rights&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;NT Authority&lt;/TD&gt;
&lt;TD&gt;System&lt;/TD&gt;
&lt;TD&gt;フル コントロール&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;BUILTIN&lt;/TD&gt;
&lt;TD&gt;Administrators&lt;/TD&gt;
&lt;TD&gt;フル コントロール&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;BUILTIN&lt;/TD&gt;
&lt;TD&gt;Users&lt;/TD&gt;
&lt;TD&gt;変更&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;この場合、&lt;A href="http://msdn.microsoft.com/en-us/library/aa369774.aspx"&gt;LockPermissions Table&lt;/A&gt; には下記 3 行を追加します。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;LockObject&lt;/TH&gt;
&lt;TH&gt;Table&lt;/TH&gt;
&lt;TH&gt;Domain&lt;/TH&gt;
&lt;TH&gt;User&lt;/TH&gt;
&lt;TH&gt;Permission&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;_009F8BF9D3EC4C278D0F060093FC80E8&lt;/TD&gt;
&lt;TD&gt;CreateFolder&lt;/TD&gt;
&lt;TD&gt;NT Authority&lt;/TD&gt;
&lt;TD&gt;System&lt;/TD&gt;
&lt;TD&gt;268435456&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;_009F8BF9D3EC4C278D0F060093FC80E8&lt;/TD&gt;
&lt;TD&gt;CreateFolder&lt;/TD&gt;
&lt;TD&gt;BUILTIN&lt;/TD&gt;
&lt;TD&gt;Administrators&lt;/TD&gt;
&lt;TD&gt;268435456&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;_009F8BF9D3EC4C278D0F060093FC80E8&lt;/TD&gt;
&lt;TD&gt;CreateFolder&lt;/TD&gt;
&lt;TD&gt;BUILTIN&lt;/TD&gt;
&lt;TD&gt;Users&lt;/TD&gt;
&lt;TD&gt;-536805376&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;[Permission] の値がわけわからない？ それはごもっとも。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms790780.aspx"&gt;Access mask&lt;/A&gt; とは bit flag の集合で下記 3 種類に分類できます。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;Generic Access Rights&lt;/A&gt;, &lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;Standard Access Rights&lt;/A&gt;, Specific Access Rights&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;Generic Access Rights&lt;/A&gt; と &lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;Standard Access Rights&lt;/A&gt; はすべての object で有効ですが、Specific Access Rights はその object 専用の権限が定義されています。今回の場合対象は folder ですので &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;File Security and Access Rights&lt;/A&gt; で確認できます。&lt;/P&gt;
&lt;P&gt;268435456 は "フルコントロール" = &lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_ALL&lt;/A&gt; (0x10000000) を 10 進表記したものになります。-536805376 はちょいとめんどくさいですが、下記の計算結果で &amp;#8221;変更" を示しています。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_EXECUTE&lt;/A&gt; (0x20000000) | &lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_WRITE&lt;/A&gt; (0x40000000) | &lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_READ&lt;/A&gt; (0x80000000) | &lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;DELETE&lt;/A&gt; (0x00010000)&lt;/P&gt;
&lt;P&gt;とりあえず対象は file のみですが、よく利用する access rights の対応表を作成してみました。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Friendly Name&lt;/TH&gt;
&lt;TH&gt;Access Rights&lt;/TH&gt;
&lt;TH&gt;Hex&lt;/TH&gt;
&lt;TH&gt;Decimal&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;フル コントロール&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_ALL&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;0x10000000&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;268435456&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;変更&lt;BR&gt;(読み取りと実行&lt;BR&gt;フォルダの内容一覧表示&lt;BR&gt;書き込み 含む) &lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_READ&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_WRITE&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_EXECUTE&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;DELETE&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;0xE0010000&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;-536805376&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;読み取りと実行&lt;BR&gt;(フォルダの内容一覧表示 含む)&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_READ&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa446632.aspx"&gt;GENERIC_EXECUTE&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;0xA0000000&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;-1610612736&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;フォルダの内容一覧表示&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;SYNCHRONIZE&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;READ_CONTROL&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_READ_ATTRIBUTES&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_TRAVERSE&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_READ_EA&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_LIST_DIRECTORY&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;0x1200A9&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;1179817&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;読み取り&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_READ&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;0x1&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;書き込み&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa379607.aspx"&gt;SYNCHRONIZE&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_ATTRIBUTES&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_EA&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_APPEND_DATA&lt;/A&gt;&lt;BR&gt;| &lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_DATA&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;0x100116&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P align=right&gt;1048854&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;長くなりましたが、&lt;A href="http://msdn.microsoft.com/en-us/library/aa369774.aspx"&gt;LockPermissions Table&lt;/A&gt; 編集後 MSI file を保存すれば &lt;A href="http://msdn.microsoft.com/en-us/library/aa374872.aspx"&gt;DACL&lt;/A&gt; を変更する機能を付与した installer の完成です。&lt;/P&gt;
&lt;P&gt;&amp;lt;参考&amp;gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/288975/en-us"&gt;How To Set Permissions Using the LockPermissions Table&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/255905/"&gt;Orca データベース エディタを使用して Windows インストーラ ファイルを編集する方法&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/167617.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>すべての user で扱う file の配置場所</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx</link><pubDate>Fri, 06 Feb 2009 04:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/167574.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx#Feedback</comments><slash:comments>121</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/167574.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/167574.aspx</trackback:ping><description>&lt;P&gt;FAQ な質問にすべての user で扱う file はどこに配置すべき？ というのがあります。この質問は目にするたび、user がその file を直接指定することがないのであれば、下記に配置するべきだと書いています。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;OS&lt;/TH&gt;
&lt;TH&gt;Path&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Vista&lt;/TD&gt;
&lt;TD&gt;%PROGRAMDATA%&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;XP&lt;/TD&gt;
&lt;TD&gt;%ALLUSERPROFILE%\Application Data&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Vista 以降限定であれば、環境変数一つで定義されているので環境変数を利用してもよいですが、Vista より以前が対象に含まれる場合にはこれではまずいです。上記の場所は registry に設定されており、それを扱う API が整備されているので必ずそれを利用しましょう。&lt;/P&gt;
&lt;TABLE width=2&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Library type&lt;/TH&gt;
&lt;TH&gt;Function&lt;/TH&gt;
&lt;TH&gt;Argument&lt;/TH&gt;
&lt;TH&gt;Minimum OS&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Win32&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762181.aspx"&gt;SHGetFolderPath&lt;/A&gt;&lt;BR&gt;&lt;DEL&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762204.aspx"&gt;SHGetSpecialFolderPath&lt;/A&gt;&lt;/DEL&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762494.aspx"&gt;CSIDL_COMMON_APPDATA&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Win32&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762188.aspx"&gt;SHGetKnownFolderPath&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd378457.aspx"&gt;FOLDERID_ProgramData&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;Vista&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;COM&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb761738.aspx"&gt;IKnownFolderManager::GetFolder&lt;/A&gt;&lt;/TD&gt;
&lt;TD width=61&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd378457.aspx"&gt;FOLDERID_ProgramData&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;Vista&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;.NET&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/library/system.environment.getfolderpath.aspx"&gt;System.Environment.GetFolderPath&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/library/system.environment.specialfolder.aspx"&gt;CommonApplicationData&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Automation&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb774085.aspx"&gt;Shell.Namespace&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762494.aspx"&gt;CSIDL_COMMON_APPDATA&lt;/A&gt;&lt;BR&gt;(&amp;amp;h23)&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;なお、対象 folder の ACL は Windows Vista では既定で下記のように構成されています。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Type&lt;/TH&gt;
&lt;TH&gt;Name&lt;/TH&gt;
&lt;TH&gt;Permission&lt;/TH&gt;
&lt;TH&gt;Inheritance&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;NT AUTHORITY\System&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_ALL_ACCESS&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;BUILTIN\Administrators&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_ALL_ACCESS&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;CREATOR OWNER&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;GENERIC_ALL&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;INHERIT_ONLY_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;BUILTIN\Users&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;GENERIC_READ&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;GENERIC_EXECUTE&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;BUILTIN\Users&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_DATA&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_APPEND_DATA&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_EA&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_ATTRIBUTES&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;上記 DACL を簡単に説明すると、制限 user はすべての file を開いたり実行でき、 file を新規作成できるが、自分が作った file じゃないと更新や削除ができないということになります。実によく考えられてますね。&lt;/P&gt;
&lt;P&gt;これが嫌なら、DACL を変更することになります。&lt;/P&gt;
&lt;P&gt;ただ、安易に複数 user で共有する場所に配置するのは考え物です。その file が本当に複数 user 間で共有する必要があるか今一度考慮すべきでしょう。その file を直接指定することなく、すべての user で共有する必要があり、かつすべての user が更新する必要があるものって相当少ないと思いますよ。&lt;/P&gt;
&lt;P&gt;また、対象の file の内容はすべての user が扱う必要があるもののみ格納されているでしょうか？ すべての user が扱う必要の無いものが含まれているのであれば、それは分離し個々の user profile に格納するべきでしょう。&lt;/P&gt;
&lt;P&gt;なお、user が直接その file を指定することがあるのであれば、"%ALLUSERPROFILE%" ("%PUBLIC%") 配下の "Documents", &amp;nbsp;"Downloads", "Music", "Pictures", "Videos" とかに格納すべきです。それぞれ対応した &lt;A href="http://msdn.microsoft.com/en-us/library/dd378457.aspx"&gt;KNOWNFORDERID&lt;/A&gt; (&lt;A href="http://msdn.microsoft.com/en-us/library/bb762494.aspx"&gt;CSIDL&lt;/A&gt;) があるので、環境変数など使わずに API で取得しましょう。&lt;/P&gt;
&lt;P&gt;ちなみに、こちらは "NT AUTHORITY\INTERACTIVE" に十分な権限が与えられているので更新等で問題が生じることはほぼないでしょう。逆に厳しくしたいという要件が結構あるかも。&lt;/P&gt;
&lt;P&gt;&amp;lt;参考&amp;gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/310294/"&gt;Visual C++ 2005 または Visual C++ .NET を使用して、ユーザーとアプリケーションのデータを適切な場所に格納する Windows XP アプリケーションを記述する方法&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/167574.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>