<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>管理者は見た！～AD と ILM 一家の秘密～</title><link>http://blogs.technet.com/jpilmblg/default.aspx</link><description>あらまあ Microsoft Japan の ADSI / ILM / WMI /PCNS&lt;br&gt; 
サポートチームのブログなんですってよ奥様！(本当)</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>[WMI-NetAPI] Win32_NetworkAdapterConfigration の結果が重複する 2/(2)</title><link>http://blogs.technet.com/jpilmblg/archive/2009/11/21/wmi-netapi-win32-networkadapterconfigration-2-2.aspx</link><pubDate>Fri, 20 Nov 2009 16:09:54 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3295386</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3295386.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3295386</wfw:commentRss><description>&lt;p&gt;&lt;font color="#464646"&gt;みなさんごきげんよう。ういこです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;久しぶりに天空の城ラピュタを見ています。私ムスカ様が大好きで、某 SNS のファンコミュニティに勢いで入ってそれっきりなくらいラブです。ちなみにぴろとくんは飲み屋でビニール袋でないと触れない激辛チキン食べた際にリアル「目が、目が～」をやったそうです。グッジョブ！ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;さて、今回は以下のミッションのシリーズ第二回目です。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;第一回目はこちら &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;[WMI-NetAPI] Win32_NetworkAdapterConfigration の結果が重複する 1/(2)&lt;/strong&gt;&lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/11/20/wmi-netapi-win32-networkadapterconfigration-1.aspx"&gt;&lt;font color="#ff8040"&gt;http://blogs.technet.com/jpilmblg/archive/2009/11/20/wmi-netapi-win32-networkadapterconfigration-1.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;【今回のミッション】      &lt;br /&gt;環境上にあるネットワーク アダプタがある条件下ではレジストリにゴミ情報が残り、その結果 WMI の Win32_NetworkAdapterConfigration クラスの取得結果が重複してしまうことがある。       &lt;br /&gt;以前問い合わせをした際、その動作自体は OS の規定の動作ということで GetAdaptersInfo()、GetAdaptersAddresses() などを使ってアクティブなデバイスを取得し、そのデバイスから Win32_NetworkAdapterConfigration の情報をフィルタしたいと思っているが、フラグに使おうと思う変数が思うような値を返さず、フィルタ条件として有効にならない状況である。       &lt;br /&gt;&lt;strong&gt;Win32_NetworkAdapterConfigration のうち、適切なアクティブな状態のアダプタの情報だけフィルタして取得する方法とは何か！ &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;***************** &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;前回は同じネットワーク アダプタなのに、重複して情報がレジストリに登録されてしまうという話をお伝えしました。      &lt;br /&gt;今回は、対処方法についてご案内します。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;&lt;u&gt;1) Win32_NetworkAdapter の Availability プロパティをみたらどうかな？          &lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;…残念ながらこの方法ではだめです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;最初私が試したのは、Win32_NetworkAdapterSetting の取得の前にWin32_NetworkAdapter をクエリし、各ネットワーク インターフェースの状態を見るということでした。      &lt;br /&gt;Availability プロパティは、デバイスの状態を指します。このとき、3 (0x3) が返されたデバイスは、&amp;quot;Running or Full Power&amp;quot; の状態ですので、それを使えばいいかなと思ったのです。       &lt;br /&gt;ちなみにこのとき、物理デバイス以外も 3 を返しますので、さらに PhysicalAdapter プロパティが True、すなわち物理デバイスであるかも条件に含めました。       &lt;br /&gt;重複してても、現時点で有効ではないデバイスは状態は 3 ではないと考えたのです。       &lt;br /&gt;しかし、結果はだめでした。やはり、重複分も検知されてかえってきてしまうのです。DDK のなおきお～さんに伺ったところ、そもそも OS からすれば、OS 停止中に抜かれたデバイスは復帰する可能性もあるので、Running or Full Power として認識したままになるのはおかしいことではないのではないかということでした。       &lt;br /&gt;デバイスのことはあまりよくわかりませんが、そういうものなのでしょうか。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;ただ、現実的にうまくいかないことから、次の手を考えなくてはいけなくなってしまいました。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;&lt;u&gt;2) GetAdapterAddresses() あるいは GetAdapterInfo() の Index を使ってみたらどうかな&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;※ 注意 : 以下は今後の OS の設計あるいはサービス パックによって動作が変更される可能性があります ※ &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;できなくはないのですが、手を入れる必要がかなりあります。      &lt;br /&gt;これらの API を使うと、GetAdapterInfo() API なら IP_ADAPTER_INFO 構造体の Index、GetAdapterAddresses() API なら IP_ADAPTER_ADDRESSES 構造体の ifIndex にネットワーク アダプタ インターフェースのインデックスとして振られる番号をとることができるのですが、このインデックスの振られ方にくせがあるため、ちょいと工夫が必要になります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;通常の流れはこうなると思います。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;1. Win32_NetworkAdapterConfiguration にて、Description と、SettingID を取得      &lt;br /&gt;2. SettingID を使用し、レジストリから NTEContextList を取得       &lt;br /&gt;3. GetAdaptersAddresses() あるいは GetAdaptersInfo() で Index を取得       &lt;br /&gt;4. 上記 2. の NTEContextList と 3. で取得した値がマッチするかチェック &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;引っかかるのは、3. です。たとえば、Windows XP では、&lt;font color="#008040"&gt;&lt;strong&gt;65539&lt;/strong&gt;&lt;/font&gt;、Windows 2000 では、&lt;font color="#008040"&gt;&lt;strong&gt;16777219&lt;/strong&gt;&lt;/font&gt; といった値が返ってきてしまうことがあります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;じつは、この &amp;quot;&lt;strong&gt;65539&lt;/strong&gt;&amp;quot;、&amp;quot;&lt;strong&gt;16777219&lt;/strong&gt;&amp;quot;、10 進数では意味のわからない値ですが、それぞれ 16 進数で見ると 65539 = 0x100003、16777219 = 0x1000003 となります。インデックス番号の順番は必ずしも 1, 2, ... n といったような順序ではなく、0x1000003 (Windows 2000)、0x100003 (Windows XP 以降) といった振られ方をされることがあるのです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;&amp;lt;&amp;lt; なぜインデックスが変な値になってるの？ &amp;gt;&amp;gt;&lt;/strong&gt;       &lt;br /&gt;Windows 2000 Service Pack 4 以降から OS の設計上の動作が変更され、ネットワーク アダプタ インターフェースのインデックスとして振られる番号は以下のような構成になりました。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;PnP インスタンス + ネットワーク アダプタ インターフェースのインデックス &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;要は、これらの ifIndex やら Index で取れる値そのままを使っても、WMI の index として取得される下位のインターフェース インデックスとそのまま比較できないのです。      &lt;br /&gt;また、&amp;quot;PnP インスタンス + インターフェースのインデックス&amp;quot; のフォーマットは、OS ごとに異なります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;・Windows 2000 …&lt;font color="#ff8000"&gt; 01&lt;/font&gt; &lt;font color="#ff0000"&gt;000003&lt;/font&gt; = 0x1000003 = 16777219         &lt;br /&gt;&lt;/strong&gt;(&lt;font color="#ff8000"&gt;01 が PnP インスタンス&lt;/font&gt;、それ以降が &lt;font color="#ff0000"&gt;NIC インデックス&lt;/font&gt;です) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;・Windows XP / 2003 …&lt;font color="#0000ff"&gt; 00&lt;/font&gt; &lt;font color="#ff8000"&gt;01&lt;/font&gt; &lt;font color="#ff0000"&gt;0003&lt;/font&gt; = 0x10003 = 65539&lt;/strong&gt;       &lt;br /&gt;(&lt;font color="#0000ff"&gt;00 が常に 0 でデバイスを表します。&lt;/font&gt;&lt;font color="#ff8040"&gt;01 が PnP インスタンス&lt;/font&gt;、&lt;font color="#ff0000"&gt;0003 が今回でいうところの NIC インデックス&lt;/font&gt;になります) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;比較の前に、下位ネットワーク アダプタ インターフェースのインデックスのみ抽出してあげる必要があります。      &lt;br /&gt;以下は C++ の例です。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;例) Windows 2000 の場合 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;PIP_ADAPTER_INFO pAdapterInfo, pAdapt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//…(中略) …&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; ((Err = GetAdaptersInfo(pAdapterInfo, &amp;amp;AdapterInfoSize)) != 0)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//…(中略) …&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;// シフトしてIndex 取得、以降 WMI の index と組み合わせる&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;test = (pAdapterInfo-&amp;gt;Index &amp;lt;&amp;lt; 16) &amp;gt;&amp;gt; 16;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;例) Windows XP 以降の場合 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;PIP_ADAPTER_ADDRESSES pAddress;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//…(中略) …&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; ((Err = GetAdaptersAddresses(AF_INET, 0, NULL, pAddress,&amp;amp;AdapterInfoSize)) != 0)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//…(中略) …&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;DWORD test;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//…(中略) …&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;// シフトしてIndex 取得、以降 WMI の index と組み合わせる&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;test = (pAddress-&amp;gt;IfIndex &amp;lt;&amp;lt; 8) &amp;gt;&amp;gt; 8; &lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#464646"&gt;シフトではなくて、マスクでもいいかもです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;&lt;u&gt;3) SetupDi にてデバイスの状態確認を行う&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;上記の方法はシフト計算なので、C# などでもできなくはないですが (API 呼び出すのはちと骨が折れますが) 、なにぶん OS の将来的な設計変更なんかがあるとリンダ困っちゃいます。       &lt;br /&gt;重複情報があっても、デバイス マネージャでは常にデバイスはひとつしか出ません。       &lt;br /&gt;そこでこれを応用し、さらに敷居は高いのですが、デバイス マネージャの仕組みと同じく、デバイスの状態を見るという手もあります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;厳密に現在 Active なデバイスの状態を判断するために、&lt;strong&gt;Windows Driver Kit (WDK) のSetupDi&lt;/strong&gt; を使い、WMI の Win32_NetworkAdapter で取得できる PNPDeviceID を与えることによって、判別するデバイスを指定しデバイスを列挙することが出来ればその NIC は有効、出来なければ除外するという処理を行うという手段です。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;strong&gt;&amp;lt;&amp;lt; コード例 C++ &amp;gt;&amp;gt;        &lt;br /&gt;&lt;/strong&gt;以下コード例です。IsPresentedNetClassDevice という関数を実装しています。使い方は簡単。Win32_NetworkAdapter クラスの PNPDeviceID を取得し、IsPresentedNetClassDevice() の引数に与えてやってください。現在有効なデバイスであれば True、無効（重複したいらない情報）であれば False を返します。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;※ 注意 : SetupDi 系関数をご利用いただくには、Windows Driver Kit を開発環境にインストールしていただく必要があります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;WDK の入手方法 : &lt;/font&gt;&lt;a href="http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx"&gt;&lt;font color="#ff0080"&gt;http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;&lt;font color="#008040"&gt;// ←-- コード抜粋ここから&lt;/font&gt;       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: blue"&gt;#pragma&lt;/span&gt; &lt;span style="color: blue"&gt;comment&lt;/span&gt;(&lt;span style="color: blue"&gt;lib&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;setupapi.lib&amp;quot;&lt;/span&gt;)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: blue"&gt;#include&lt;/span&gt; &lt;span style="color: #a31515"&gt;&amp;lt;setupapi.h&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: blue"&gt;#include&lt;/span&gt; &lt;span style="color: #a31515"&gt;&amp;lt;cfgmgr32.h&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: blue"&gt;#include&lt;/span&gt; &lt;span style="color: #a31515"&gt;&amp;lt;devguid.h&amp;gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;BOOL IsPresentedNetClassDevice(LPCTSTR szTrgetDeviceId)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;{&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; BOOL bFound;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; DWORD index, result;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; HDEVINFO hDevInfo;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; SP_DEVINFO_DATA DevInfoData;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; TCHAR szDeviceID[MAX_PATH]; &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; bFound = FALSE;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; hDevInfo = NULL;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt;(szTrgetDeviceId == NULL)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;goto&lt;/span&gt; Done; &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; hDevInfo = SetupDiGetClassDevsEx(&amp;amp;GUID_DEVCLASS_NET,&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL,&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL,&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DIGCF_PRESENT,&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL,&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL,&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt;(hDevInfo == NULL)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;goto&lt;/span&gt; Done; &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; index = 0;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; ZeroMemory(&amp;amp;DevInfoData, &lt;span style="color: blue"&gt;sizeof&lt;/span&gt;(DevInfoData));&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; DevInfoData.cbSize = &lt;span style="color: blue"&gt;sizeof&lt;/span&gt;(DevInfoData);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;while&lt;/span&gt;(0 != SetupDiEnumDeviceInfo(hDevInfo, index++, &amp;amp;DevInfoData)) &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ZeroMemory(szDeviceID, &lt;span style="color: blue"&gt;sizeof&lt;/span&gt;(&amp;amp;szDeviceID));&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; result = CM_Get_Device_ID(DevInfoData.DevInst, szDeviceID, &lt;span style="color: blue"&gt;sizeof&lt;/span&gt;(szDeviceID), 0);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dbgprint(TEXT(&lt;span style="color: #a31515"&gt;&amp;quot;%s\n&amp;quot;&lt;/span&gt;), szDeviceID);&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt;((result != CR_SUCCESS) || (CSTR_EQUAL != CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, szTrgetDeviceId, -1, szDeviceID, -1)))&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;continue&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bFound = TRUE;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; Done:&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt;(hDevInfo)&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; SetupDiDestroyDeviceInfoList(hDevInfo); &lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; bFound;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;&lt;font color="#008040"&gt;// ←-- コード抜粋ここまで&lt;/font&gt;&lt;/div&gt;  &lt;p&gt;&lt;font color="#464646"&gt;ただ、これを VBScript やらでやるというと…↑の関数を DLL とかにして、参照するしかないのかなぁと悩んでます。      &lt;br /&gt;WMI や VBScript は、色々なテクノロジーで使えるようになっているので、各テクノロジーをそれぞれ勉強しないとわからないこともあり、「WMI」担当というくくりはちょっときっついなぁと思うこともありますが、日々勉強だなあと痛感しております。おいおい、VBScript でのやり方も考えていこうと思っていますが、ご参考まで。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;協力 : WDK サポートチームなおきお～さん (Blog&amp;#160; : &lt;a href="http://blogs.msdn.com/jpwdkblog/" target="_blank"&gt;Japan WDK Support Team Blog&lt;/a&gt;) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#464646"&gt;ういこう@アパラチャノモゲータ！(フハッ)&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3295386" width="1" height="1"&gt;</description></item><item><title>[WMI-NetAPI] Win32_NetworkAdapterConfigration の結果が重複する 1/(2)</title><link>http://blogs.technet.com/jpilmblg/archive/2009/11/20/wmi-netapi-win32-networkadapterconfigration-1.aspx</link><pubDate>Fri, 20 Nov 2009 13:15:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3295350</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3295350.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3295350</wfw:commentRss><description>&lt;p&gt;&lt;font color="#626262"&gt;みなさんごきげんよう。ういこです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;最近というか、ずっと心身ともに調子悪くて困っています。目の前のことを一個一個片付けていったらいずれは終わるのでしょうか。いつ終わるのかわからない螺旋の中をぐるぐる回ってる気分です。      &lt;br /&gt;そういえば某恋愛ゲームの女の子も、告白直前の夢で螺旋がどうこうって言ってましたね。螺旋といえば、&amp;quot;覚悟のススメ&amp;quot; くらいしか思いつかなかったんですが。 …わたしはまだ、覚悟完了の境地までは至っておりません。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;さて、今日はそんな終わることのない螺旋を思わせる for 文ばっかり想起させる WMI ねたをひとつ。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;&lt;u&gt;&lt;strong&gt;【今回の問題】          &lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;&lt;font color="#ff0080"&gt;&lt;strong&gt;環境上にあるネットワーク アダプタがある条件下ではレジストリにゴミ情報が残り、その結果 WMI の Win32_NetworkAdapterConfigration クラスの取得結果が重複してしまうことがある。          &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;以前問い合わせをした際、その動作自体は OS の規定の動作ということで GetAdaptersInfo()、GetAdaptersAddresses() などを使ってアクティブなデバイスを取得し、そのデバイスから Win32_NetworkAdapterConfigration の情報をフィルタしたいと思っているが、フラグに使おうと思う変数が思うような値を返さず、フィルタ条件として有効にならない状況である。       &lt;br /&gt;Win32_NetworkAdapterConfigration のうち、適切なアクティブな状態のアダプタの情報だけフィルタして取得する方法とは何か！       &lt;br /&gt;うなる鉄拳！       &lt;br /&gt;異音を立てるデバイス！       &lt;br /&gt;ただで機械の体をくれるといううまい話に明日はあるか。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;***************** &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;…すみません後半はかなり電波でした…。      &lt;br /&gt;まず、どういう現象なのかを順に追ってみてみることにします。       &lt;br /&gt;今回は、同じデバイスなのになぜか違うデバイスとしておなじデバイスの情報が複数作られてしまう状況についてお話します。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;&lt;strong&gt;&lt;u&gt;1) 同じネットワーク アダプタなのに複数接続状態に見えることがある &lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;取り外しできるようなネットワーク アダプタを挿して、そのあと抜いて、また挿すということはよくある操作です。      &lt;br /&gt;また、複数ネットワーク アダプタが挿してあるというのも、無線 Lan / 有線 Lan と使い分けることも多いこのご時勢、よくあることでございます。       &lt;br /&gt;通常こうした動作で何か超常現象が発生するようなことはありませんが、以下の条件などの場合に、同じデバイスの情報が重複してしまうことがあります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;1. ネットワーク アダプタを挿して、デバイス ドライバをインストール      &lt;br /&gt;2. PC の電源をシャットダウン       &lt;br /&gt;3. 電源の入ってない PC からアダプタを抜く       &lt;br /&gt;4. PC の電源をオン       &lt;br /&gt;5. また同じネットワーク アダプタを挿す &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;こうすると、同一のアダプタが複数接続状態となっている様に見える場合がありました。      &lt;br /&gt;これは、電源が落とされた状態でデバイスが抜かれ、無効となる事で OS がデバイスを取り外す際に行うべき処理をおこなう事ができず情報が残った結果となります。       &lt;br /&gt;また、確認されているほかの条件としては、複数存在するネットワーク アダプタのうち、インストール時に OS が先に認識したネットワーク アダプタを取り外す、などもあります。       &lt;br /&gt;あとから認識されたネットワーク アダプタを取り外してもこの現象は発生いたしません。 ちなみに、&lt;strong&gt;デバイス マネージャ上は重複している「はず」のデバイスは 1 個分しか表示されません&lt;/strong&gt;。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;&lt;strong&gt;&lt;u&gt;2) 何で複数接続状態に見えちゃうの？同じアダプタなのに！ &lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;レジストリには、ネットワーク アダプタを識別するために &lt;strong&gt;&lt;font color="#ff0080"&gt;NTEContextList&lt;/font&gt;&lt;/strong&gt; という値が保存されています。       &lt;br /&gt;この値は、ネットワーク アダプタが認識された順を示すのですが、OS にてネットワーク アダプタのアンインストール処理が行われないうちにネットワーク アダプタが取り外されてしまうと、次回アダプタを認識時に欠番が生じたことを判断できず、NTEContextList の値が重複してしまいます。       &lt;br /&gt;このため、ネットワーク アダプタ情報を重複して取得する結果が生じます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;NTEContextList は、レジストリ上のネットワークアダプタ情報が格納されている領域にて割り振られます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;上記レジストリ以下にネットワーク アダプタを示すユニークな文字によってレジストリキーが作成されているのです。      &lt;br /&gt;このキー配下に NTEContextList エントリがあります。       &lt;br /&gt;重複現象が発生した場合、複数のネットワーク アダプタ配下の NTEContextList 値に対して同一の値が格納されているネットワーク アダプタが存在することになります。       &lt;br /&gt;もし、これっぽいなと思ったらレジストリの上記エントリを見てみましょう。どこかに重複しているやつがいるはずです。       &lt;br /&gt;ちなみに、これら複数に見えるネットワーク アダプタの情報は、実際には取り外しが認識できずに旧情報が含まれた意味のない情報です。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;次回は、これをどうやってお料理するかを見ていきましょう。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;&lt;strong&gt;つづき ⇒ [WMI-NetAPI] Win32_NetworkAdapterConfigration の結果が重複する 2/(2)&lt;/strong&gt;&lt;/font&gt;&lt;a title="http://blogs.technet.com/jpilmblg/archive/2009/11/21/wmi-netapi-win32-networkadapterconfigration-2-2.aspx" href="http://blogs.technet.com/jpilmblg/archive/2009/11/21/wmi-netapi-win32-networkadapterconfigration-2-2.aspx"&gt;http://blogs.technet.com/jpilmblg/archive/2009/11/21/wmi-netapi-win32-networkadapterconfigration-2-2.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#626262"&gt;ういこう@「流行りの服は嫌いかね？」…ムスカ様のお洋服の趣味ってどうかと思う。&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3295350" width="1" height="1"&gt;</description></item><item><title>[Win7] NB100 にインストール時に 0x80300001 (※ 自己責任でおねがいします！！※)</title><link>http://blogs.technet.com/jpilmblg/archive/2009/11/16/win7-nb100-0x80300001.aspx</link><pubDate>Sun, 15 Nov 2009 15:00:23 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3293950</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3293950.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3293950</wfw:commentRss><description>&lt;p&gt;&lt;font color="#3a3a3a"&gt;みなさんこんにちは。ういこです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;いま私は自分の実家におります。昨日おばあちゃんのお見舞いに行きがてら、ホーム Lan を工事して引いた親父様が手ぐすね引いて待っていらして、無線 Lan の設定をなりゆきでお手伝いしていたのですが、それが終わらず今日にずれ込んでしまいました。     &lt;br /&gt;そしてその流れで、親父様が取材に行くときに使うというネットブック東芝 NB100 というもの（Windows XP 入り HDD モデル) を Windows 7 にしよう！ということで、旦那が無線 Lan の設定に四苦八苦している横で、優雅に Windows 7 をとっとと入れてやろうと思ったら… &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;ま だ 終 わ り ま せ ん &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;ホワーイ！？もう日曜の 11 時（午後）ですよ。月曜まで 1 時間切ってます！     &lt;br /&gt;というのも、いろいろトラブルが（汗 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;ちょいとハマったので、もしかして同じようにお困りのかたがいるかも～と思い、今日はごく私的な内容ですが、ご紹介させてください。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt; &lt;strong&gt;1. DVD からのブート       &lt;br /&gt; 2. パパの HDD のリカバリ領域壊しちゃった        &lt;br /&gt; 3. 0x80300001 ですってよ奥様、こまっちゃう &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;&lt;u&gt;&lt;strong&gt;1. DVD からのブート         &lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;DVD ドライブがないと言われたので、徒歩 5 分の某電気店でバッファローの Windows 7 対応、OS を入れるさいのブート対応確認した DVD を購入。      &lt;br /&gt;電源供給 AC アダプタいるかなーと思いましたが、ケチって買いませんでした。      &lt;br /&gt;家に帰って PC につなげたら、青い電源ランプはつくけど、なぜかブートしない。      &lt;br /&gt;そこで、Windows 起動 → TOSHIBA 画面で、F2 押す → BIOS で、起動の優先順位を &amp;quot;DVD/CD&amp;quot; にする。とにかく HDD より DVD だか CD だかが先にくればよし。F7 / F8 を押すと起動順序が変わります。      &lt;br /&gt;でも、DVD からブートしない。      &lt;br /&gt;よーく DVD の付属品と紙をみたら、二股の USB がある。どうやら「ダブル給電対応USBケーブル」というらしい。電源が一本の USB 給電で弱い場合はこちらを使えとのこと。幸い、HB100 は右に二つくらい USB ポートがあるので、そこに二本ぶっ挿して、再起動。      &lt;br /&gt;これで DVD からブートできるようになりました！！ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;&lt;strong&gt;&lt;u&gt;2. パパの HDD のリカバリ領域壊しちゃった&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;これに気を良くして、インストーラをどんどんすすめ、HDD のインストールパーティションのところで、もう全領域削除。100GB の領域のほかの 3 GB くらいの領域も削除しちゃいました。うっすら、これリカバリー領域じゃないかなぁと思ったんですが…      &lt;br /&gt;あとでこれが恐ろしい事態を招くとも思わず、横でだまらせるためにマスターガンダム（マスターグレード金メッキ仕様、私の作りかけ）を作っている息子は吠えるがセットアップは進む…（大映ドラマのナレーション風） &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;&lt;strong&gt;&lt;u&gt;3.&amp;#160; 0x80300001 ですってよ奥様、こまっちゃう&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;HDD をきりなおし、フォーマット。と…。なぜか [Next] がグレーアウト！どういうことですか？！      &lt;br /&gt;左下にエラーの詳細を見れと黄色いリンクが。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;&amp;quot;&lt;font color="#ff8000"&gt;&lt;strong&gt;Windows is unable to install to the selected location. Error: 0x80300001.&lt;/strong&gt;&lt;/font&gt;&amp;quot;      &lt;br /&gt;(↑英語版入れてた) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;えーーーーーーーーーーーーーーーーーー！？     &lt;br /&gt;なんで！？ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;まず、既知事例を検索するも US で事例が一件。「解決した」とあるが、どうやって解決したか書いてないよ！？US の担当者！ちゃんと対応ログ書け！と思う。     &lt;br /&gt;そして、bing で NB100 で Windows 7 入れた人の意見とかないかなーと思って検索してみるも、なんかこんなトラブルの人だれもいないし。レアエラー！？ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;そこでいやな予感が。もしかして、なんかのドライバ必要とかって落ち！？しかし、いかんせん、なんのドライバが対応してないか情報が出ず、わからない…     &lt;br /&gt;いろいろ探して、これっぽいなぁと思うものをダウンロードしたが、 InstallShield で作られているようで、CAB が展開できず、USB に入れてセットアップのドライバ選択画面でリムーバブル ディスクを指定するも、inf ファイルがないのでドライバがないですと言われてしまう…。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;もしかしてこれって     &lt;br /&gt;XP の状態でインストールしつつ展開して、ファイル抜いとかないといけなかった？！ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;いや～な汗が出てくるものの、いろいろ試行錯誤しつつ、結局一度 XP に戻すことを決意。     &lt;br /&gt;数字の 0 (ゼロ) キーを押して、電源を入れても… &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;何 も 出 ま せ ん &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;まっずーい…その、リカバリー DVD ってついてると思いこんでて…お客様に日ごろバックアップしてくださいねと言っておきながらこれ！お客様すみません！     &lt;br /&gt;つーかパパごめん！      &lt;br /&gt;いろいろ、FAQ や Bing ったりしたものの、こりゃサポートセンターの方にお世話にならないとダメかな…リカバリー領域戻すのはさすがにわからない（汗 と思っていたところでふと気付く。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;もしかして SATA コントローラ…？ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;BIOS の設定を見たら、SATA Controller Mode が AHCI。規定の OS だと AHCI が設定してある必要があるらしいが（Dynabook のサイトより）Compatibility モードに変更したら、うまくいきました。     &lt;br /&gt;どうもその後いろいろみていたら、AHCI だと、PC → DVD は読み込めるけど、DVD → PC の方向だと、HDD が認識できないらしいです。正直よくわかりませんが…。      &lt;br /&gt;しかし東芝さんのサイトにあるように、もともとある環境で使いたいときは、 AHCI である必要があるということなので、&lt;strong&gt;あくまでも自己責任&lt;/strong&gt;で。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://dynabook.com/assistpc/faq/pcdata/006615.htm" href="http://dynabook.com/assistpc/faq/pcdata/006615.htm"&gt;http://dynabook.com/assistpc/faq/pcdata/006615.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;そういえば、過日カーネルデバッグ目当てに、プレミアのお客様からまるごと VMware のイメージをいただいたうちのチームのエンジニアが、COM ポートがない！VMWare のプレーヤー上に設定項目もない！とあせったそうですが、正解は BIOS で COM ポートを有効化する、でした。     &lt;br /&gt;予想以上に BIOS は重要なんだなぁ…。      &lt;br /&gt;久しぶりにこういうセットアップなんかやると焦ります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;ちなみにそのあと、電源コードつないでると思ってたのがコンセント抜けてて、セットアップが途中で止まりやり直す羽目になってさらに 20 分くらい損しました。     &lt;br /&gt;電源コード抜けてたことの戦犯探しを激しくしましたが、旦那と父親になだめすかされて現在もセットアップ中。うまくいくといいんですが。もうこれで駄目なら本気で泣きたい（涙） &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;&lt;strong&gt;【今日の教訓】       &lt;br /&gt;・リカバリーディスクはシステム存命中につくっとこうね        &lt;br /&gt;・インストール中は電源コードがつながっているかちゃんとチェックしよう        &lt;br /&gt;・なんか変なものがあったらとりあえず消さないでおく（リカバリー領域ちゃん…）        &lt;br /&gt;・BIOS の設定ってすごい大事 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3a3a3a"&gt;ういこう@それでも NT4 セットアップ中にデバドラ追加するよりは楽だな (※)     &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;(※) MS 入社直後、NT4 セットアップを当時チームメイトだった今の旦那に指令され、その際にするときデバドラ追加しろと言われたんですが、どうやっても F6 (だったっけ) を押すタイミングがつかめず、できないと言ったら旦那に「心眼で見切れ！がんばれよ！」と言われ、とんでもない会社に来たなと思ったです。&lt;strong&gt;なんだよ心眼って。&lt;/strong&gt;今はそんな無体な人いませんけど。旦那はいい人になりました。&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3293950" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>[Windows 7] 前夜祭！秋葉原カフェソラーレであなたと握手！</title><link>http://blogs.technet.com/jpilmblg/archive/2009/10/21/windows-7.aspx</link><pubDate>Wed, 21 Oct 2009 08:13:42 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3288056</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3288056.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3288056</wfw:commentRss><description>&lt;p&gt;&lt;font color="#2a2a2a"&gt;皆さんごきげんよう、ういこです。     &lt;br /&gt;気づいたら、Windows 7 が明日ラウンチでございます。そんな緊迫した状況の中、本日 19 時から秋葉原カフェソラーレにおいてシステムビルダー主催の前夜祭が行われます。      &lt;br /&gt;ぜひ皆様お越しくださいませ！福引もあるようでございます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;詳細はこちら！      &lt;br /&gt;&lt;/font&gt;&lt;a href="http://www.win7mania.com/launchevent/"&gt;&lt;font color="#2a2a2a"&gt;http://www.win7mania.com/launchevent/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;ちなみに各ショップさんで、オリジナル前夜祭イベントも開催されるようです。     &lt;br /&gt;&lt;/font&gt;&lt;a href="http://www.win7mania.com/launchevent/sboriginal/"&gt;&lt;font color="#2a2a2a"&gt;http://www.win7mania.com/launchevent/sboriginal/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;私もいきたいのですが、今日は子供のお迎えなので行けません…。血涙を流したくなるほど残念でございます。 が、チームの誰かは行くみたいです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;Windows 7 は、Beta からいじったりしていますが、製品版、本当にいい感じです。     &lt;br /&gt;Windows 98 リリース直前の Windows 95 時代に購入して以来、なんと 11 年ぶりに私も自腹でノート PC (某社の Netbook) を購入し、Windows XP から Windows 7 製品版に入れなおして使っていますが、本当にストレス無く動いてます。ドライバのアンマッチも ACPI ドライバ以外特に無く、また電源関連で変な動作もしていないので満足しています。マウスユーティリティ for Windows XP も動くし。(※ 私のネットブックの場合です。デバイスや構成によって変わる可能性があるので、念のため、各ベンダー様に確認してくださいね。) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;動きも軽いし、スペックバリバリじゃないけど軽めのネットブックとの相性の良さにいい意味で裏切られた気分です。社員としての使命感抜きで本当によいです。リモートデスクトップでサーバ管理できればいいや！という方や、Security からシン クライアント Love なあなたにも自信を持って薦められます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;皆さん、よろしくおねがいします！ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#2a2a2a"&gt;ういこう@非公式キャラクターかわいい&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3288056" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>[ILM/MIIS] Delta Import より Full Import のほうが早いときがある</title><link>http://blogs.technet.com/jpilmblg/archive/2009/10/08/ilm-miis-delta-import-full-import.aspx</link><pubDate>Thu, 08 Oct 2009 05:42:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3285398</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3285398.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3285398</wfw:commentRss><description>&lt;p&gt;&lt;font color="#373737"&gt;みなさん御機嫌よう。ういこです。      &lt;br /&gt;今日 2009/10/08 はリンゴ台風以来の凄い台風が列島縦断しています。子供の学校はサックリ休みになっております。学童クラブからは、朝 8:30 から預かるが、空気を読んで自粛してほしいというメールを頂きましたが、断腸の思いでお弁当を持たせて行かせてしまいました…。（旦那がバイクで連れて行きました。）お弁当作るのって本当に大変です。奥様に作っていただいている世の旦那様、「いつもありがとう」の言葉と、せめて弁当箱くらいは洗ってあげてくださいね。でないと、微妙に不満や怨念が蓄積されていくかもしれませんよ。洗ってくれなくても言葉くらいはマジでほしいです。語らなくても通じるなんてうそです！！絶対に。ちなみに少なくとも私は蓄積されます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;と、まあ微妙に怨念が台風のように渦巻くのはさておき、今日のお題は、最近本業の ILM を忘れたような感じになってるので、ILM のことについて。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;【今日のお題】&lt;/font&gt;&lt;/strong&gt;       &lt;br /&gt;Active Directory / ADAM の MA を使ってます。Full Import は遅いので、Delta Import にしたいと思ってますがどうでしょう。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;【回答】          &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;結論からいうと、&lt;font color="#ff0000"&gt;&lt;strong&gt;必ずしも Full Import より Delta Import のほうが早いとは限りません&lt;/strong&gt;&lt;/font&gt;。       &lt;br /&gt;場合によってはむしろ Full Import のほうが早い場合があります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;では、それはなぜか。まず、Active Directory / ADAM のマネージメントエージェント (MA) を例にとり、&lt;/font&gt;&lt;font color="#373737"&gt;各 Import 処理はどんなことをしているか見てみましょう。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;&lt;u&gt;1. Import の処理ってどんなことをしているの？&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;strong&gt;&lt;font color="#004080"&gt;・Full Import&lt;/font&gt; &lt;/strong&gt;      &lt;br /&gt;ADAM および Active Directory の MA の Full Import では、LDAP API を使用し、接続先ディレクトリに存在するすべての対象オブジェクトに対してクエリーを実行します。たとえば、MA の &amp;quot;Select Object Types&amp;quot; プロパティ シートで指定されているオブジェクト クラスすべてを対象としてクエリーを実行する、というようなことが可能です。       &lt;br /&gt;Full Import で収集された情報には、特定オブジェクトに格納されているすべての属性値などがあります。       &lt;br /&gt;ILM も、最終更新時に関する情報を格納しているため、この情報は Delta Import でも使用することができます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;・Delta Import&lt;/font&gt;         &lt;br /&gt;&lt;/strong&gt;Delta Import では、[Configure Partitions] ダイアログの [Containers] ボタンおよび [Deleted Objects] コンテナで設定されたコンテナのオブジェクトを対象としてクエリーを実行します。ADAM および Active Directory のマネージメント エージェントの Delta Import では、LDAP API と DirSync LDAP コントロールを併用します。DirSync LDAP コントロールを使用することにより、直近に成功した Full Import 以後、変更のあったディレクトリに対してのみ、クエリーを実行することが可能です。このような処理が可能なのは、Import した全オブジェクトのオブジェクト ステート情報を格納しているためです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;…これを見ていただいても、Delta Import は、クエリーを実行するのが、最後の Import 以後に変更の生じた箇所のみであるため、Full Import と比較し、Delta Import の実行時間がかなり短縮されるという以外に、何があるのだろう？といぶかしまれるかもしれません。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;しかしながら、この、「最後の Import 以後に変更の生じた箇所」をチェックする、というところが実は誤解しやすいポイントなのです。ディレクトリのすべてオブジェクトあるいは大半が更新されるなど、大量の更新があった場合は Full Import の方が効率的な場合もあります。      &lt;br /&gt;実際、Delta Import でも Full Import の実行時間と変わらない場合や、逆に非常に遅くなることまであるのです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;&lt;u&gt;2. Delta Import のコスト&lt;/u&gt;         &lt;br /&gt;&lt;/strong&gt;Delta Import についてもう少し詳しく見てみましょう。       &lt;br /&gt;&lt;/font&gt;&lt;font color="#373737"&gt;Active Directory は、 オブジェクトの属性に Update Sequence Number(USN) を持っています。      &lt;br /&gt;Delta Import では、コネクタ スペース (CS) 内のオブジェクトと Import 動作時に AD にアクセスし、USN 値を比較して差分を検出し、差分更新の生じているオブジェクトの Import を実施しています。       &lt;br /&gt;データ数が少ない状況ですと、Delta Operation は Full Operation と比較するとこれらの差分確認処理を含めても処理件数、プログラム コードの処理数的にも優位ですが、これが数万件単位になるとこの差分処理がオーバーヘッドとなります。       &lt;br /&gt;さらに、アクセスしにいくのは AD だけではありません。CD オブジェクトを参照し、比較する際に SQL Server にクエリを投げるのですが、これも処理コストとしては決して少なくない処理です。結果的に Full Operation よりも処理コストが高い処理になる、というからくりなのです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;まとめますと処理コストとなる要素として大きなものは下記となります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;・AD への USN の参照          &lt;br /&gt;・SQL Server に対する CS オブジェクトとの比較クエリ&lt;/strong&gt;&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;件数が少ない場合、Delta Import のほうが早いというのは、差分が少なければディレクトリアクセスは抑制され、一連の処理で一番件数が増えて影響を受ける SQL クエリの処理の件数が少ないからです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;こうした事情により、更新オブジェクト数がディレクトリのほぼ全てに及ぶような場合、Delta Operetion の生じない Full Import の方が効率が良いことになります。つまり、若干の更新のみが検出されるような動作や運用初期においては Delta Import を通常操作としつつ、定期的に Full Import を施行する、というのが効率がよい運用ということになります。      &lt;br /&gt;なぜならば、定期的に Full Importをかけないと、差分が増加を続けるので、結果的に USN の処理も比例的に増加してしまうためです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;以下が公開されている情報でわりと詳しいものかと思います。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;Understanding run profiles in MIIS 2003      &lt;br /&gt;&lt;/font&gt;&lt;a href="http://support.microsoft.com/kb/827118/en-us"&gt;&lt;font color="#ff8000"&gt;http://support.microsoft.com/kb/827118/en-us&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;※ 補足      &lt;br /&gt;・&lt;font color="#373737"&gt;なお、AD 側でデータを直接登録、変更などを行った際は Full Import を定期的に行うほうが Delta Import の効率化を図れますが、たとえば AD 側で直接データ変更などを行わず、別のデータソースからのデータを Export のみで更新していくような運用であれば、定期的な Full Import は必ずしも有効ではありません。 &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;・初回、AD 上の全オブジェクトが Export 操作により生成される前提条件であれば、Import 対象のオブジェクトはこの Export 操作により更新されていると判断されます。よって全オブジェクトが要更新対象(差分)とみなされますので、その後 Delta Import を行っても全てのオブジェクト属性が収集されます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;・Full Sync を以前行った日が半年以上前など、Active Directory における既定の TombStone 期間よりも前である場合、ドメインのオブジェクトの移動や削除に関する正しい情報が、データソースから得られないため、CS オブジェクトが無効となる恐れがあります。この場合、一旦 CS オブジェクトを削除し、Full Import と Delta Sync をやり直すことをお勧めします。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;&lt;u&gt;3. Delta Import と Full Import の所要時間逆転の閾値はシステムに依存する&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;残念ながら Delta Import と Full Import の所要時間が逆転する閾値に相当するかどうかの判断は、お客様の動作環境、ネットワーク構成および実際の動作状況から判断する必要があります。       &lt;br /&gt;また、ディレクトリ アクセスと SQL 負荷のどちらが、MIIServer サービスに影響を与えているかは、構成に依存するため、帯域、CPU 負荷、ハードディスクアクセスの状態など複数の要素によって状況が左右されるということがあり、ILM の製品的に一意の閾値は存在しません。       &lt;br /&gt;実際の運用の実績ベースの RunHistory からの更新件数、処理時間などから、判断する必要があります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;ではみなさんごきげんよう。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;ういこう@うずまきといえば伊藤潤二先生だと思う&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3285398" width="1" height="1"&gt;</description></item><item><title>[～W2K8 / W2K8R2] Windows on Windows (WOW) の最大サポート CPU 基数はいくつ？</title><link>http://blogs.technet.com/jpilmblg/archive/2009/10/07/w2k8-w2k8r2-windows-on-windows-wow-cpu.aspx</link><pubDate>Wed, 07 Oct 2009 11:30:53 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3285222</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3285222.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3285222</wfw:commentRss><description>&lt;p&gt;&lt;font color="#535353"&gt;皆様御機嫌よう、ういこです。     &lt;br /&gt;今日は、せっかく今期から Windows SDK 一家の軒下を借りるようになったので、たまには Windows API についてのことでも書いてみようと思います。      &lt;br /&gt;Windows API というか、Windows の仕組みの話になっちゃいますが…。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;Windows Server 2008 R2 から、64bit CPU に特化されましたことは、これまでのサーバー製品が 64bit 版にどんどんシフトしていっている流れ的にさもありなん、という感じはあったものの、ついにきたなという思いでした。ただ、64bit CPU が出てかなり時間が経つとはいえ、既存のアプリケーション資産は 32bit でビルドされたもの（32bit Windows 上で動作することを想定して作成されたものという意味）がまだまだ現役で動いている、という状況が大半ではないでしょうか。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;&lt;strong&gt;&lt;u&gt;Windows On Windows (WOW)&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;Windows OS では、64bit OS 上でも、32bit アプリケーションを動作させる仕組み &amp;quot;Windows On Windows&amp;quot; というサブ システムがあります。32bit アプリケーションは、このサブ システム上で動作します。あくまでもサブ システムなので、エミュレーションしているようなものです。そのため、厳密に 32bit Windows と同じ動作にはならないことがあることに注意しなくてはなりません。昔、Windows が出始めのころ、コマンド プロンプト上で DOS アプリケーションを動かした方で、挙動が微妙に違うと悩んだかたもいらっしゃるでしょう。それと同じことになることを頭に入れる必要があります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;&lt;strong&gt;&lt;u&gt;CPU の最大サポート基数について&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;サーバー上で動作させるアプリケーションである場合、WOW 上で動作させるにしても、プロセッサを最大限使いたいというかたもいらっしゃると思います。そうした場合、&lt;strong&gt;WOW はいったい何基までの CPU をサポートするのでしょうか？&lt;/strong&gt;      &lt;br /&gt;答えは、&lt;strong&gt;&lt;font color="#ff0000"&gt;32 基までとなります&lt;/font&gt;&lt;/strong&gt;。ドキュメントは、残念なことに本社の人にも聞いてみましたが、以下の MSDN のドキュメントくらいしか書いていないようです。 &lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#535353"&gt;&lt;strong&gt;Processor Affinity (プロセッサの親和性)&lt;/strong&gt;        &lt;br /&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa384228(VS.85).aspx"&gt;&lt;font color="#ff8000"&gt;http://msdn.microsoft.com/en-us/library/aa384228(VS.85).aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#535353"&gt;&amp;lt;--- 抜粋ここから ----&amp;gt;     &lt;br /&gt;32-bit Windows supports a maximum of 32 processors.       &lt;br /&gt;Therefore, functions such as GetProcessAffinityMask       &lt;br /&gt;&lt;font color="#ff0000"&gt;simulate a computer with 32 processors when called under WOW64.&lt;/font&gt;       &lt;br /&gt;&amp;lt;--- 抜粋ここまで ----&amp;gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;&lt;strong&gt;・Windows Server 2008 &lt;font color="#ff0000"&gt;までの&lt;/font&gt;場合 (64bit アプリは &lt;font color="#ff0000"&gt;64 基&lt;/font&gt;、WOW は&lt;font color="#ff0000"&gt; 32 基&lt;/font&gt;) &lt;/strong&gt;      &lt;br /&gt;64 bit Windows OS の内部では、アプリケーションの動作の際に 64bit プラットフォーム上で動作することを前提としてビルドされているか、それ以外を対象としてビルドされたものかという判断を行っています。プロセッサ数は、MAXIMUM_PROCESSORS という定数で設定されており、以下のとおりとなります。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;・&lt;/font&gt;&lt;font color="#535353"&gt;64bit アプリケーションの場合 64 基&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;・&lt;/font&gt;&lt;font color="#535353"&gt;それ以外の場合 32 基&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;&lt;strong&gt;・Windows Server 2008 &lt;font color="#ff0000"&gt;R2&lt;/font&gt; の場合 (64bit アプリは&lt;font color="#ff0000"&gt; 256 基&lt;/font&gt;だが WOW は相変わらず &lt;font color="#ff0000"&gt;32 基&lt;/font&gt;)&lt;/strong&gt;      &lt;br /&gt;Windows Server 2008 までの Windows の仕組みでは、ロック機構の実装にまだまだ改善の余地があり、64 基以上のプロセッサの場合動作が遅くなる可能性などがあり、上記のように 64 基までということになっていました。しかし、Windows Server 2008 R2 では、ある一人のすごい人がこのロックの実装ロジックを解決することができたそうです。(うわさではその人は勇者としてリアルにアワードをゲットしたとか…)&lt;/font&gt;&lt;font color="#535353"&gt;     &lt;br /&gt;また、R2 では、CPU が複数あるマルチコア環境下で、Non-Uniform Memory Access (NUMA) の強化が行われています。      &lt;br /&gt;NUMA というのは耳慣れない言葉かと思いますが、実は結構前から概念はあったようです。これは、CPU をグループとして管理し、効率よく使おうとする見たいなことのようです。(プロセッサ グループはカーネルが決定) このグループ化の仕方がいい感じになり、1 スレッドを処理するコア = 1 論理プロセッサとして扱い、同一コア中の論理プロセッサ、同一の物理プロセッサ内のコア、物理に近い論理プロセッサなど、近隣の論理プロセッサ同士を同一のグループにすることで、バスのデータ転送の効率を上げようともくろんだようです。ちなみに NUMA グループは &amp;quot;ノード&amp;quot; という言葉で表現されるみたいです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;そして、256 基までサポートされるならば WOW もあわよくばサポート基数が増えたのでは…と思ったのですが、残念ながら &lt;strong&gt;&lt;font color="#ff0000"&gt;WOW はあいかわらず 32 基&lt;/font&gt;&lt;/strong&gt;でございます。      &lt;br /&gt;また、物理スロットは 64 基までです。なのに 256?? &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;…実は、この 256 のからくりは、&lt;strong&gt;64 基 x 最大 4 ノード = 256 基&lt;/strong&gt;、ということでして、なぜ WOW は 32 基なのかというと、&lt;strong&gt;32 基 x 1 ノード = 32 基&lt;/strong&gt;ということだったりするのでした。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;WOW 上での動作を見る際はお&lt;/font&gt;&lt;font color="#535353"&gt;気をつけくださいませ。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#535353"&gt;ういこう@明日は小学校が臨時休校！？&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3285222" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/Windows+API/default.aspx">Windows API</category></item><item><title>[WMI] C++ で 2 つ以上の引数を与えてメソッドを実行するには？ 2 / (2)</title><link>http://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-2-2.aspx</link><pubDate>Tue, 06 Oct 2009 10:18:26 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3285010</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3285010.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3285010</wfw:commentRss><description>&lt;p&gt;&lt;font color="#393939"&gt;みなさん御機嫌よう、ういこです。      &lt;br /&gt;前回はお題が WMI C++ で 2 つ以上の引数をメソッドに与える方法についてなのに、VBScript やら C# やらで書いていてどうよ？って思われた方もいらっしゃるかと思います。すみません。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;【お題 : C++ で WMI - メソッドに二つ以上引数を渡したいの】&lt;/strong&gt;         &lt;br /&gt;&lt;/font&gt;前回はこちら。タイトル変えました。       &lt;br /&gt;&lt;/font&gt;&lt;font color="#393939"&gt;&lt;strong&gt;[WMI] C++ で 2 つ以上の引数を与えてメソッドを実行するには？ 1 / (2)        &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;a href="https://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-1-2.aspx"&gt;&lt;font color="#393939"&gt;https://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-1-2.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;※ 前回のあらすじ ※        &lt;br /&gt;&lt;/strong&gt;Windows を管理するには最高のパートナーの WMI。しかし、その実態は某大戦中の某国の大型戦車のように威力はすごいが足が遅かった！1 ターンでの移動力が 1 Hex 位しか進まないとまでは行かなくても。そんな WMI を改良すべく、スクリプトだと量がすごいすくないのはわかっていても、あえて C++ で動かそうと考えた熱い魂をもつ漢（おとこ）たち。しかし、MSDN には引数を一個しか指定しない感じのサンプルしかない。C# とかも微妙に参考にならない感じだ。       &lt;br /&gt;どうする！？ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;【はじめに】&lt;/strong&gt;         &lt;br /&gt;&lt;/font&gt;早速、ExecQuery を…と思う前に、まあまあはやる心を抑えましょう。       &lt;br /&gt;C++ の場合は、&lt;strong&gt;自分で認証情報などをつけないといけない&lt;/strong&gt;のです。C# や、VBScript などでよしなにしてくれた処理も、自分でやらなくてはならないのです。そこが大変な上に、&lt;strong&gt;コード量ももりもり増えます。&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;・IWbemService のプロキシが使用する認証情報を明示的に設定する必要がある。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#393939"&gt;(特に、リモートでアクセスする場合など)&lt;/font&gt;&lt;font color="#393939"&gt;      &lt;br /&gt;WMI のプログラムのプロセス実行ユーザーがリモート コンピュータの管理者権限を持たない場合は、ConnectServer() で&amp;#160;&amp;#160;&amp;#160; 管理者権限を持つユーザーの名前とパスワードを指定していても、ExecQuery() でアクセス拒否されてしまいます。       &lt;br /&gt;リモート コンピュータ上の情報を取得する際には、リモート コンピュータ上の WMI の実装が DCOM 経由で呼び出されます。この際、リモート コンピュータ上で実行されるスレッドのユーザーは適切な権限を持つユーザーである必要があるのです。この、リモートコンピュータ上で実行されるスレッドのユーザーを指定するには、&lt;strong&gt;CoSetProxyBlanket&lt;/strong&gt;() を使用します。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;ちなみに &lt;strong&gt;CoSetProxyBlanket() の第 7 引数&lt;/strong&gt;がポイントです。NULL を指定した場合は「ローカル コンピュータ上で実行しているユーザー」として、リモート コンピュータ上でもスレッドを実行することを意味します。実行ユーザーとは別のリモート コンピュータ上で管理権限を持つユーザーとして、リモート コンピュータ上のスレッドを実行するには、CoSetProxyBlanket() の第 7 引数でユーザーを明示的に指定してあげてください。       &lt;br /&gt;それと、ふるーいバージョン Service Pack などがないの Windows XP では CoQueryProxyBlanket() の第 2 引数に DWORD のポインタを渡すように対応してください。Windows Server 2003 では修正されて出荷されているのですが、NULL を渡すと Access Violation が発生する不具合があります。XP のサービスパックなしバージョンなどで動作させようとすることもシステム要件に含む場合は注意してください。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;1. ExecQuery() メソッドで、以下の WQL 文を発行します。 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;例 :      &lt;br /&gt;仮想マシン名「Windows Server 2003 (x86)」に対してシャットダウンを行う場合&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt; IEnumWbemClassObject* pEnumerator = NULL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt; hres = pSvc-&amp;gt;ExecQuery(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt; bstr_t(&lt;span style="color: #a31515"&gt;&amp;quot;WQL&amp;quot;&lt;/span&gt;), &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt; bstr_t(&lt;span style="color: #a31515"&gt;&amp;quot;SELECT * FROM Msvm_ComputerSystem WHERE ElementName='Windows Server 2003 (x86)'&amp;quot;&lt;/span&gt;),&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;pEnumerator);&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;2. IEnumWbemClassObject から仮想マシンの GUID (Name) を列挙し、Get() メソッドで VARIANT 型の変数に格納します。&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt; IWbemClassObject *pclsObj = NULL;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt; ULONG uReturn = 0;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt; VARIANT vtProp;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;while&lt;/span&gt; (pEnumerator)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HRESULT hr = pEnumerator-&amp;gt;Next(WBEM_INFINITE, 1, &amp;amp;pclsObj, &amp;amp;uReturn);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt;(0 == uReturn)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Get the value of the Name property&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hr = pclsObj-&amp;gt;Get(L&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;, 0, &amp;amp;vtProp, 0, 0);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; wcout &amp;lt;&amp;lt; &lt;span style="color: #a31515"&gt;&amp;quot; VM's Name : &amp;quot;&lt;/span&gt; &amp;lt;&amp;lt; vtProp.bstrVal &amp;lt;&amp;lt; endl;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pclsObj-&amp;gt;Release();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pclsObj = NULL;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt; }&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;3. 上記ステップ 2. で取得した仮想マシン名を用いて、Msvm_ShutdownComponent クラスをクエリします。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt; IEnumWbemClassObject* pVmshout = NULL;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt; bstr_t WQL = _T(&lt;span style="color: #a31515"&gt;&amp;quot;SELECT * FROM Msvm_ShutdownComponent WHERE SystemName='&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WQL += vtProp.bstrVal;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WQL += _T(&lt;span style="color: #a31515"&gt;&amp;quot;'&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VariantClear(&amp;amp;vtProp);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 38&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 39&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hres = pSvc-&amp;gt;ExecQuery(bstr_t(&lt;span style="color: #a31515"&gt;&amp;quot;WQL&amp;quot;&lt;/span&gt;), &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 40&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WQL,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 41&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 42&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 43&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;pVmshout);&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;4. IEnumWbemClassObject を列挙し、Msvm_ShutdownComponent クラスのパスを取得します。 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 44&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hr = pclsObj-&amp;gt;Get(L&lt;span style="color: #a31515"&gt;&amp;quot;__Path&amp;quot;&lt;/span&gt;, 0, &amp;amp;vtProp, 0, 0);&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#393939"&gt;※ デバッガ上でみたクラスのフルパス = vtProp のデータ例 (実際には改行はありません) 検証端末名 : UIKOUTEST2008 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 46&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; vtProp BSTR = &lt;span style="color: #a31515"&gt;&amp;quot;\\UIKOUTEST2008\root\virtualization:&amp;#160;&amp;#160;&amp;#160; Msvm_ShutdownComponent.CreationClassName=&amp;quot;&lt;/span&gt;Msvm_ShutdownComponent&lt;span style="color: #a31515"&gt;&amp;quot;,&amp;#160;&amp;#160;&amp;#160; DeviceID=&amp;quot;&lt;/span&gt;Microsoft:9F8233AC-BE49-4C79-8EE3-E7E1985B2077&lt;span style="color: #a31515"&gt;&amp;quot;,&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;5. ConnectServer() の呼び出しの際に指定した IWbemServices オブジェクトを用いて Msvm_ShutdownComponent クラスを取得します。&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 50&lt;/span&gt; bstr_t ClassName = _T(&lt;span style="color: #a31515"&gt;&amp;quot;Msvm_ShutdownComponent&amp;quot;&lt;/span&gt;);&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 51&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 52&lt;/span&gt; IWbemClassObject* pClass = NULL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 53&lt;/span&gt; hres = pSvc-&amp;gt;GetObject(ClassName, 0, NULL, &amp;amp;pClass, NULL);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&lt;font color="#393939"&gt;&lt;strong&gt;6. ステップ 5. で取得した Msvm_ShutdownComponent クラスの InitiateShutdown() メソッドを取得します。 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;    &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 56&lt;/span&gt; bstr_t MethodName = _T(&lt;span style="color: #a31515"&gt;&amp;quot;InitiateShutdown&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 57&lt;/span&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 58&lt;/span&gt; IWbemClassObject* pInParamsDefinition = NULL;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 59&lt;/span&gt; hres = pClass-&amp;gt;GetMethod(MethodName, 0, &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 60&lt;/span&gt; &amp;amp;pInParamsDefinition, NULL);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&lt;font color="#393939"&gt;&lt;strong&gt;7. SpawnInstance() を使用してインスタンスを取得します。 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;      &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;       &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;         &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;          &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 63&lt;/span&gt; IWbemClassObject* pClassInstance = NULL;&lt;/p&gt;          &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 64&lt;/span&gt; hres = pInParamsDefinition-&amp;gt;SpawnInstance(0, &amp;amp;pClassInstance);&lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;8. InitiateShutdown() メソッドの引数をPut() メソッドを使用して指定します。        &lt;br /&gt;&lt;/strong&gt;以下の例では、InitiateShutdown() メソッドの引数 Force に true を、第二引数 Reason に文字列を指定します。なんと、わかれば単純！この形式でどんどん Put していけばよいのですね。 &lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 67&lt;/span&gt;&amp;#160;&lt;span style="color: green"&gt;// Create the values for the in parameters&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 68&lt;/span&gt; VARIANT varCommand;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 69&lt;/span&gt; varCommand.vt = VT_BOOL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 70&lt;/span&gt; varCommand.boolVal = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 71&lt;/span&gt; hres = pClassInstance-&amp;gt;Put(L&lt;span style="color: #a31515"&gt;&amp;quot;Force&amp;quot;&lt;/span&gt;, 0,&amp;amp;varCommand, 0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 72&lt;/span&gt; VariantClear(&amp;amp;varCommand);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 73&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 74&lt;/span&gt; varCommand.vt = VT_BSTR;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 75&lt;/span&gt; varCommand.bstrVal = L&lt;span style="color: #a31515"&gt;&amp;quot;Because I want to do it.&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 76&lt;/span&gt; hres = pClassInstance-&amp;gt;Put(L&lt;span style="color: #a31515"&gt;&amp;quot;Reason&amp;quot;&lt;/span&gt;, 0,&amp;amp;varCommand, 0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 77&lt;/span&gt; VariantClear(&amp;amp;varCommand);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;font color="#393939"&gt;&lt;strong&gt;9. ステップ 4. で取得した Msvm_ShutdownComponent クラスのパスを ExecMethod() に指定し、InitiateShutdown() メソッド (第二引数 MethodName) を実行します。 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 80&lt;/span&gt; IWbemClassObject* pOutParams = NULL;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 81&lt;/span&gt; hres = pSvc-&amp;gt;ExecMethod(vtProp.bstrVal, MethodName, 0,&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 82&lt;/span&gt; NULL, pClassInstance, &amp;amp;pOutParams, NULL);&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;【注意点】&lt;/font&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;strong&gt;・ドメイン非参加の PC からリモート PC 上の管理者権限ユーザを指定してもアクセス拒否されることがある&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;ちなみにドメインに参加していない PC (Windows XP など) の既定の設定では、ネットワーク経由でのアクセスの際に認証されたユーザーはリモートコンピュータ上で Guest の権限のみを持ちます。このため、WMI を使ってリモート コンピュータ上の情報を取得する際に、リモート コンピュータ上での管理者権限を持つユーザーを指定してアクセスした場合でも、アクセスを拒否されることがあります。      &lt;br /&gt;この設定はローカル セキュリティ ポリシー管理ツールの以下の項目で変更可能です。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;[セキュリティの設定]          &lt;br /&gt;- [ローカルポリシー]           &lt;br /&gt;- [セキュリティ オプション]           &lt;br /&gt;- [ネットワーク アクセス：ローカル アカウントの共有とセキュリティ モデル]&lt;/strong&gt;&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;この項目を、「クラシック - ローカルユーザーがローカルユーザーとして認証する」に変更することで、ネットワーク アクセスの際に認証されたユーザがリモートコンピュータ上で、認証されたユーザーとしての権限を持つように変更できます。      &lt;br /&gt;なお、ドメインに参加している Windows XP 上ではネットワーク アクセスの際に認証されたユーザーは、リモートコンピュータ上でそのユーザーとしての権限を持ちます。ちなみに、Windows Server 2003 のデフォルトの設定では、この設定は「クラシック」に設定されています。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;参考 :      &lt;br /&gt;エラー メッセージ : Access Denied; Specified User Is Not a Member of TelnetClients Group       &lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;ja;298060"&gt;http://support.microsoft.com/default.aspx?scid=kb;ja;298060&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC222_E544/image_2.png"&gt;&lt;font color="#393939"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC222_E544/image_thumb.png" width="773" height="296" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#393939"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC222_E544/image_4.png"&gt;&lt;font color="#393939"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC222_E544/image_thumb_1.png" width="431" height="411" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#393939"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;【おまけ : 一連の処理をもっとわかりやすくしてみたです &amp;amp; 行番号がないコピペ対応版】&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: �l�r �s�v�b�n; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;BSTR methodName = SysAllocString(L&lt;span style="color: #a31515"&gt;&amp;quot;InitiateShutdown&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;BSTR className = SysAllocString(L&lt;span style="color: #a31515"&gt;&amp;quot;Msvm_ShutdownComponent&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;IWbemClassObject *pClass = NULL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;hres = pSvc-&amp;gt;GetObject(className, 0, NULL, &amp;amp;pClass, NULL);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;IWbemClassObject *pInParamsDefinition = NULL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;hres = pClass-&amp;gt;GetMethod(methodName, 0, &amp;amp;pInParamsDefinition, NULL);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;IWbemClassObject *pClassInstance = NULL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;hres = pInParamsDefinition-&amp;gt;SpawnInstance(0, &amp;amp;pClassInstance);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;VARIANT varCommand;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;varCommand.vt = VT_BOOL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;varCommand.boolVal = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;VARIANT varCommand2;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;varCommand2.vt = VT_BSTR;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;varCommand2.bstrVal = L&lt;span style="color: #a31515"&gt;&amp;quot;Because I want to do it.&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;pClassInstance-&amp;gt;Put(L&lt;span style="color: #a31515"&gt;&amp;quot;Force&amp;quot;&lt;/span&gt;,0,&amp;amp;varCommand,0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;pClassInstance-&amp;gt;Put(L&lt;span style="color: #a31515"&gt;&amp;quot;Reason&amp;quot;&lt;/span&gt;,0,&amp;amp;varCommand2,0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;hres = pclsObj-&amp;gt;Get(L&lt;span style="color: #a31515"&gt;&amp;quot;__PATH&amp;quot;&lt;/span&gt;, 0, &amp;amp;vtProp, 0, 0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;IWbemClassObject* pOutParams = NULL;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;hr = pSvc-&amp;gt;ExecMethod(vtProp.bstrVal, methodName,0,NULL,pClassInstance,&amp;amp;pOutParams,NULL);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (FAILED(hr))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;wcout &amp;lt;&amp;lt; &lt;span style="color: #a31515"&gt;&amp;quot; Could not shutdown&amp;quot;&lt;/span&gt; &amp;lt;&amp;lt; hex &amp;lt;&amp;lt; hr &amp;lt;&amp;lt; endl;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;_bstr_t bstrret(&lt;span style="color: #a31515"&gt;&amp;quot;ReturnValue&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;BSTR ret;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;hr = pOutParams-&amp;gt;GetObjectText(0, &amp;amp;ret);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;cout &amp;lt;&amp;lt; &lt;span style="color: #a31515"&gt;&amp;quot;Return Value: &amp;quot;&lt;/span&gt; &amp;lt;&amp;lt; ret &amp;lt;&amp;lt; endl;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;VariantClear(&amp;amp;varCommand);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;VariantClear(&amp;amp;varCommand2);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;pclsObj-&amp;gt;Release();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;pclsObj = NULL;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font color="#393939"&gt;以上です。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;それにしても、なんだかブログへの風当たりが強い今日この頃。わかりやすくて、使えるブログを目指しておりますので、皆さんこれからも応援していただければ幸いです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;ういこう@I Love メカニカルキーボード&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#393939"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3285010" width="1" height="1"&gt;</description></item><item><title>[WMI] C++ で 2 つ以上の引数を与えてメソッドを実行するには？ 1 / (2)</title><link>http://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-1-2.aspx</link><pubDate>Tue, 06 Oct 2009 06:45:56 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3284993</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3284993.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3284993</wfw:commentRss><description>&lt;p&gt;&lt;font color="#3e3e3e"&gt;みなさん、大変ご無沙汰しておりました。ういこです。&lt;/font&gt;&lt;font color="#3e3e3e"&gt;      &lt;br /&gt;しばらく心身ともに調子が悪く、ブログもやめようかな…と悩んでおりました。       &lt;br /&gt;しかし、会計年度も変わり、そろそろ年末も見えてきたあたりで復活しようかなと思いつつあります。またひとつよろしくお願いいたします。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;なぜか前会計年度では Windows Media テクノロジーのサポートチームと同じチームでしたが (※ US も同じ構成ですが、いまだになぜ一緒なのか謎) 今期から Windows SDK のチームとさらにくっつき、最近は普通に API 案件などもやっていたりします。なぜ Windows Media と ILM / ADSI、Windows SDK が一緒なのか、それはきっと足が飾りだと思う必要がないレベルのえらい人にしかわからない何か事情があるんでしょう。というわけで、今後は SDK 案件も書いていくことになると思いますがよろしくお願いします。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;…相変わらず前置き長くてすみません。本題に入らせていただきますです。      &lt;br /&gt;さて復活第一弾は、ILM ねたでいこうかなと思いましたが、現在稼働中の案件もいくつかあるので、あえて WMI を。…今回も文章、長いですよ…。というか、一回にしようと思いましたが、コード長すぎなんですみません。&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;続きはこちら。タイトル変えました。      &lt;br /&gt;&lt;strong&gt;[WMI] C++ で 2 つ以上の引数を与えてメソッドを実行するには？ 2 / (2)        &lt;br /&gt;&lt;a title="http://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-2-2.aspx" href="http://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-2-2.aspx"&gt;http://blogs.technet.com/jpilmblg/archive/2009/10/06/wmi-c-2-2-2.aspx&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;strong&gt;&lt;u&gt;【お題 : C++ で WMI - メソッドに二つ以上引数を渡したいの】&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;WMI。それはシステム管理者様にとって、一見いいことずくめな感じなもの。スクリプトを気合で組めば、何だって自動化できちゃうぞ！人のマシンだってシャットダウンできちゃうぞ（※注 : それ相応のシステムの管理権限必要）！と、野望や夢も膨らむってもんですが、問題はえっらい遅いこと。       &lt;br /&gt;そんな「WMI 遅い」問題に果敢に挑み C++ で実装いただいている漢（おとこ）たちもいらっしゃいます。（あるいはこれまでの既存 C 資産に WMI を組み込む必要がある方々など…。）しかし、いかんせんコード量が多い。多いのです。スクリプトや、.NET Framework アプリとして C# や VB.net などで組んだ場合と比較してコード量が半端じゃありません。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;何気に WMI はドキュメントが多いほうです。C++ も例外ではありません。英語ばっかりではあるものの拳でわかりあうように、コードをとりあえずコピペして動きに思いを馳せるってやりかたができるので割と敷居は低いほうのプロダクトです。      &lt;br /&gt;ただ、C++ の場合、メソッドを実行したいと思っても、複数個引数を与えるメソッド実行、どうやったらいいかって思ったことありませんか？今回は、C++ で WMI、複数引数でメソッド実行について、Msvm_shutdownComponent の InitiateShutdown() メソッドを例にとり、二回に分けてお話させていただきます。 &lt;/font&gt;&lt;font color="#3e3e3e"&gt;     &lt;br /&gt;例を挙げましょう。Windows Server 2008 の Hyper-V 上の OS をシャットダウンするというものです。 それぞれ、wmic コマンドを使った場合、VBScript の場合、C# の場合から見ていきます。C++ は次回のお楽しみです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;strong&gt;&lt;u&gt;[1] WMIC コマンドの場合&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;WMIC コマンドを使った例です。まず、仮想マシンの名前が &amp;quot;Windows 7&amp;quot; のものをシャットダウンします。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;strong&gt;1. GUID をゲットする&lt;/strong&gt;       &lt;br /&gt;仮想マシン名から、仮想マシンの GUID をとってきます。このとき、Msvm_ComputerSystem を使います。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;※注意 : 必ずコマンドプロンプトは権限を昇格させ、管理者で実行してください。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;wmic /namespace:&amp;quot;\\root\virtualization&amp;quot; path Msvm_ComputerSystem where ElementName='Windows 7' get name&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC212_B373/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC212_B373/image_thumb_1.png" width="578" height="222" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;strong&gt;2. Msvm_shutdownComponent を使って、上記 1. を使いシャットダウンさせます。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;メソッドは InitiateShutdown です。一つ目の引数 true は強制終了の意味、二つめはあのよくサーバを落とす際にかかされる「終了の理由」です。下記の引数に与えている&lt;font color="#ff8000"&gt;&lt;strong&gt;オレンジ色の GUID&lt;/strong&gt;&lt;/font&gt; は、上記 1. でとってきた GUID をコマンド プロンプトからコピペしてきたものです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;wmic /namespace:\\root\virtualization path Msvm_shutdownComponent where systemname=&lt;font color="#ff8000"&gt;'5EDE3587-0CF3-4C0A-913F-9BEAB8E84C83'&lt;/font&gt; call InitiateShutdown true,&amp;quot;てすと&amp;quot; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC212_B373/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC212_B373/image_thumb_5.png" width="561" height="366" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;↑ただしく実行されると、ReturnValue = 0 で返されてきます。&lt;/p&gt;  &lt;p&gt;↓シャットダウンされます&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC212_B373/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/WMIC212_B373/image_thumb_2.png" width="564" height="452" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;strong&gt;&lt;u&gt;[2] VBScript の場合&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;wmic だと二行ですが、ちょいと増えます。ただ、systemname にあたるところも変数を使えるので、いちいち人間が name を取得してコピペしないですむので、作成の工数はかかりつつ、その後は格段に楽です。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#008040"&gt;' &amp;lt;====&lt;/font&gt; &lt;font color="#008040"&gt;ここから&lt;/font&gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;Option Explicit&lt;/font&gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; vmshut       &lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; VMName       &lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; WMIObject       &lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; VM       &lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; VMList       &lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; vmReturn &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;VMName = &lt;font color="#800000"&gt;&amp;quot;Windows 7&amp;quot;&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;Set&lt;/font&gt; WMIObject = GetObject(&lt;font color="#800000"&gt;&amp;quot;winmgmts:\\.\root\virtualization&amp;quot;&lt;/font&gt;)       &lt;br /&gt;&lt;font color="#0000ff"&gt;Set&lt;/font&gt; VMList = WMIObject.ExecQuery(&lt;font color="#800000"&gt;&amp;quot;SELECT * FROM Msvm_ComputerSystem WHERE ElementName='&amp;quot; &amp;amp; VMName &amp;amp; &amp;quot;'&amp;quot;&lt;/font&gt;)       &lt;br /&gt;VM = VMList.ItemIndex(0).Name       &lt;br /&gt;&lt;font color="#0000ff"&gt;Set&lt;/font&gt; vmshut = WMIObject.ExecQuery&lt;font color="#800000"&gt;(&amp;quot;SELECT * FROM Msvm_ShutdownComponent WHERE SystemName='&amp;quot; &amp;amp; VM &amp;amp; &amp;quot;'&amp;quot;&lt;/font&gt;)       &lt;br /&gt;vmReturn = vmshut.ItemIndex(0).InitiateShutdown(&lt;font color="#0000ff"&gt;True&lt;/font&gt;,&lt;font color="#800000"&gt;&amp;quot;てすと&amp;quot;&lt;/font&gt;)       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#008040"&gt;' &amp;lt;====&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#008040"&gt;ここまで&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;strong&gt;&lt;u&gt;[3] C# の場合&lt;/u&gt;&lt;/strong&gt;       &lt;br /&gt;うわ、ながっ！って思うかも知れません。自分でも今見て、ながっ！と思いましたが、まだまだこれからです。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;System;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Collections.Generic;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.ComponentModel;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Data;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Drawing;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Linq;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Text;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Windows.Forms;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Collections;       &lt;br /&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;using &lt;/font&gt;&lt;/font&gt;System.Management; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&lt;font color="#0000ff"&gt;namespace &lt;/font&gt;ShutDownVM       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public partial class&lt;/font&gt; &lt;font color="#408080"&gt;Form1 &lt;/font&gt;: &lt;font color="#408080"&gt;Form        &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public &lt;/font&gt;Form1()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;private void&lt;/font&gt; button1_Click(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, &lt;font color="#408080"&gt;EventArgs&lt;/font&gt; e)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// root\virtualization クラスにスコープをあわせる&lt;/font&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ConnectionOptions options = &lt;font color="#0000ff"&gt;new&lt;/font&gt; ConnectionOptions();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementScope scope = &lt;font color="#0000ff"&gt;new&lt;/font&gt; ManagementScope(@&amp;quot;\\localhost\root\virtualization&amp;quot;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; scope.Connect(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// Msvm_computersystem クラスを用いて、name を取得        &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementObjectSearcher searcher = &lt;font color="#0000ff"&gt;new&lt;/font&gt; ManagementObjectSearcher(scope,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;new&lt;/font&gt; ObjectQuery(&lt;font color="#800000"&gt;&amp;quot;SELECT * FROM Msvm_ComputerSystem WHERE ElementName = 'Windows 7'&amp;quot;&lt;/font&gt;));       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IEnumerator enumr = searcher.Get().GetEnumerator();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; enumr.MoveNext();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementObject msvm_computersystem = (ManagementObject)(enumr.Current);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementObjectCollection collection = msvm_computersystem.GetRelated(&lt;font color="#800000"&gt;&amp;quot;Msvm_ShutdownComponent&amp;quot;&lt;/font&gt;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementObjectCollection.ManagementObjectEnumerator enumerator =       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; collection.GetEnumerator();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; enumerator.MoveNext();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementObject msvm_shutdowncomponent = (ManagementObject)enumerator.Current; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// InitiateShutdown() メソッドの引数を指定        &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementBaseObject inParams =       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; msvm_shutdowncomponent.GetMethodParameters(&lt;font color="#800000"&gt;&amp;quot;InitiateShutdown&amp;quot;&lt;/font&gt;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; inParams[&lt;font color="#800000"&gt;&amp;quot;Force&amp;quot;&lt;/font&gt;] = true;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; inParams[&lt;font color="#800000"&gt;&amp;quot;Reason&amp;quot;&lt;/font&gt;] = &amp;quot;てすと&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// InitiateShutdown() メソッドの実行        &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagementBaseObject outParams =       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; msvm_shutdowncomponent.InvokeMethod(&lt;font color="#800000"&gt;&amp;quot;InitiateShutdown&amp;quot;&lt;/font&gt;, inParams, &lt;font color="#0000ff"&gt;null&lt;/font&gt;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;uint&lt;/font&gt; returnValue = (&lt;font color="#0000ff"&gt;uint&lt;/font&gt;)outParams[&lt;font color="#800000"&gt;&amp;quot;ReturnValue&amp;quot;&lt;/font&gt;]; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008040"&gt;// 処理失敗した場合は 0 以外が返ります&lt;/font&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (returnValue != 0)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#408080"&gt;Console&lt;/font&gt;.WriteLine(&lt;font color="#800000"&gt;&amp;quot;失敗したよ&amp;quot;&lt;/font&gt;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;これを見ると、メソッドをただ実行するのではなく、以下の段階を踏んでいることがわかるかと思います。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;1. メソッドの引数 (上記例だと、inParams) を指定する      &lt;br /&gt;2. メソッドを実行する &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;次回は、これを C++ でやるとどんな風かというのを、C++ 固有の処理も含めてご紹介させていただきます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;さて、このブログを初めてごらんいただく皆様もいらっしゃるかと思います。また、気がついたらブログ開設から一年とっくに過ぎておりました。      &lt;br /&gt;当初、ILM / MIIS という率直に言って決して今のところ、裾野が広いとは言い切れない分野に情報が提供できれば、またサポート契約でどうしても対応できない範囲やわかっていればお問い合わせいただく手間も必要ないような FAQ な事例などをご紹介しようと思い始めたブログですが、気がついたら WMI やら PowerShell やら担当製品が微妙に増加してしまい、今となっては何でもありというかそもそも、technet である必要があるのかもさっぱりわからないカオスな状態になっています。文章もカオスで、マイクロソフトのサポートチームなのか胡散臭いかもしれませんが、お役立ち度数は文章の胡散臭さの絶対値以上のものを目指しております。       &lt;br /&gt;今後ともよろしくお願いいたします！ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3e3e3e"&gt;ういこう＠某国民的 GF な恋愛ゲームを誕生日プレゼントにだんなからもらいました&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3284993" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/WMI+_603088306851E154C696085421002100_/default.aspx">WMI だよ全員集合!!</category></item><item><title>[PowerShell] PowerShell のコマンドって？</title><link>http://blogs.technet.com/jpilmblg/archive/2009/09/25/powershell-1powershell.aspx</link><pubDate>Thu, 24 Sep 2009 22:16:49 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3283007</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3283007.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3283007</wfw:commentRss><description>&lt;p&gt;こんにちは、ILM一家のパパ(お父さん)です。    &lt;br /&gt;    &lt;br /&gt;昨日、連休が明け、久しぶりに ILM一家のメンバーと顔を合わせました。     &lt;br /&gt;普段、リアル家族より長い時間を過ごす仲間で、なんか安心します。&lt;/p&gt;  &lt;p&gt;リアル家族といえば、先月、娘のペットのハムスターがお亡くなりになり、新しい子をお迎えすることとなりました 。    &lt;br /&gt;行き着けのペットショップに行くと、そこには星となったハムスター(没名”ココア”ですが)と瓜二つのの子が...     &lt;br /&gt;結局、その子が新たな家族の一員となり、名前を &amp;quot;マロン&amp;quot; としたのですが、あまりにも前の子とそっくりなので、娘もつい前世の ”ココア” と呼んでしまいます。職業病でしょうか、私はその子を &amp;quot;ココア R2&amp;quot; と呼称していますが、お母さん(ういこさん) に言わせると &amp;quot;ココア MarkⅡ&amp;quot; が格好いいらしいです。やっぱ、ガン○ム 思考なんでしょうか... &lt;font color="#808080"&gt;(※ 2009/10/06 ういこうより : 同じ「日の出系」ですが、むしろ思考はエ○ガイムか吉田拓郎です。)      &lt;br /&gt;&lt;/font&gt;ちなみに、ハムスターの名前の由来は色で、栗毛(ダウというらしい)長毛サテンで綺麗な毛艶だからだそうです。     &lt;br /&gt;見た目で、初代ハムを &amp;quot;ちゅうちゅう”、2代目を ”もこもこ” と命名する娘の思考は、今も変わりません...&lt;/p&gt;  &lt;p&gt;さて、今回も PowerShell をいろいろ見ていきたいと思います。    &lt;br /&gt;前回、&lt;strong&gt;”get-help *”&lt;/strong&gt; で使用できる、Alias、Cmdlet、HelpFile を列挙できる事を書きましたが、コマンドについて少し参照情報を絞り込んで見ましょう。&lt;/p&gt;  &lt;p&gt;ここまでで使用した &lt;strong&gt;&amp;quot;get-help&amp;quot;&lt;/strong&gt;、&lt;strong&gt;&amp;quot;get-help *&amp;quot;&lt;/strong&gt; で列挙された Cmdlet を見て、お気づきなられたでしょうか。     &lt;br /&gt;PowerShell では操作を明示する、[動詞-名詞] のペアでコマンド名が定義されています。     &lt;br /&gt;何かを取得したい場合、&lt;strong&gt;&amp;quot;get-xxxxx&amp;quot;&lt;/strong&gt; となりますし、逆に設定であれば &lt;strong&gt;&amp;quot;set-xxxxxxx”&lt;/strong&gt;&amp;#160; といった名称の Cmdlet となります。&lt;/p&gt;  &lt;p&gt;そのため、取得系の提供コマンドに絞って情報参照したい場合、&lt;strong&gt;&amp;quot;get-help get-*&amp;quot; &lt;/strong&gt;(* はワイルドカード)とすれば、取得系コマンドのみを列挙することが可能です。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_3BEF/PowerShell01_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell01" border="0" alt="PowerShell01" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_3BEF/PowerShell01_thumb.jpg" width="586" height="302" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;その他にコマンド操作を明示する動詞には &lt;strong&gt;”add”&lt;/strong&gt;、&lt;strong&gt;&amp;quot;clear&amp;quot;&lt;/strong&gt;、&lt;strong&gt;”copy”&lt;/strong&gt;、&lt;strong&gt;&amp;quot;enable&amp;quot;&lt;/strong&gt;、&lt;strong&gt;”disable”&lt;/strong&gt; その他、多数が用いられます。どのような動詞があるかは、Cmdlet を列挙してみるのが良いかと思います。&lt;/p&gt;  &lt;p&gt;ここでは&amp;#160; &lt;strong&gt;&amp;quot;get-command&amp;quot;&lt;/strong&gt; を使用してみましょう。&lt;strong&gt;&amp;quot;get-command&amp;quot;&lt;/strong&gt; では引数 -CommandType でコマンドタイプを限定することが可能です。&lt;strong&gt;&amp;quot;get-command -CommandType Cmdlet&amp;quot;&lt;/strong&gt; と入力すると、Cmdlet(コマンドレット)のみが列挙されます。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_3BEF/PowerShell02_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell02" border="0" alt="PowerShell02" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_3BEF/PowerShell02_thumb.jpg" width="586" height="302" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;いかがでしょうか、PowerShell のコマンドで何かしたい場合、したい操作(動詞部分)を指定し &lt;strong&gt;&amp;quot;get-help&amp;quot;&lt;/strong&gt; 試される事をお勧めします。標準のコマンドレットについては、このようにコンソール上で使用機能を検索、機能参照する事が可能です。(使用される機能によっては、&lt;strong&gt;&amp;quot;import-module&amp;quot;&lt;/strong&gt; によるパッケージ参照動作が必要となりますが、コマンドを参照列挙したい場合の基本操作は同じです。）よろしければ、お試し下さい。&lt;/p&gt;  &lt;p&gt;もっと、PowerShell 、Windows ７ をいじり倒したい    &lt;br /&gt;～ お父さん より ～ &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3283007" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/_FB96D552B730A730EB30_+_2800_PowerShell_2900_/default.aspx">電動シェル (PowerShell)</category></item><item><title>[PowerShell] PowerShell ってどんな感じ？</title><link>http://blogs.technet.com/jpilmblg/archive/2009/09/23/powershell-powershell.aspx</link><pubDate>Wed, 23 Sep 2009 14:16:53 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3282663</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3282663.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3282663</wfw:commentRss><description>&lt;p&gt;こんにちは、ILM一家のパパ（お父さん）です。    &lt;br /&gt;ご無沙汰しており恐縮です。&lt;/p&gt;  &lt;p&gt;このところ、忙しくしていた我々 ILM一家ですが、この ５連休は追加の夏休みをいただいた感じです。    &lt;br /&gt;追加といっても、会社からいただいた夏休みが 2日残っていて如何しようか悩んでいる状況ですが...&lt;/p&gt;  &lt;p&gt;この休みは、娘と ディズニーシーに行ってきました。    &lt;br /&gt;もう、半端な混み方ではなかったですね、200分待ちのアトラクションなど尋常ではありません。     &lt;br /&gt;ポップコーンも種類によっては買うのに 30分待ちとは、日本人はホント忍耐強い民族です。     &lt;br /&gt;私も、娘も、我慢が無いので、乗りたいものはファストパスで乗って、30分待ちぐらいのアトラクションしか並びませんでしたけど... それなりに乗り物乗って、ポップコーン二種類を含め一通り飲み食いできたので満足です。     &lt;br /&gt;それにしても歩きますね、車で行って徒歩はディズニーシーの中だけですが 26677歩記録されてます。1歩 60cm換算でも 16Km超えてて、さすがに疲れましたが、最近少し脱メタボをサボってたので丁度よい運動になりました。&lt;/p&gt;  &lt;p&gt;さて今回は、この休みに少し PowerShell を Windows ７ で触ってみたので、感触をご紹介しましょう。    &lt;br /&gt;みなさん、PowerShell はお試しいただいていますでしょうか？     &lt;br /&gt;Windows Server 2008 から OS の追加機能となった PowerShell ですが、Windows ７ でも標準搭載されています。     &lt;br /&gt;(Windows Server 2003、Windows XP、Vista ではダウンロード入手いただくことで使用可能です)     &lt;br /&gt;    &lt;br /&gt;Windows 上の 従来のコマンドラインプロンプト(CMD.EXE)では、コマンド機能が DOS 由来のもので、OS 管理機能の多くを、他の実行ファイル(exe)や、スクリプティング(スクリプティングからの COM 呼び出し)などに依存していました。     &lt;br /&gt;PowerShell では コマンドラインシェル(CUI)から、今まで、 他の実行ファイル(exe)や、スクリプティング(スクリプティングからの COM 呼び出し)などに依存していた部分を、コマンドレット(Cmdlet) で提供しています。     &lt;br /&gt;&amp;#160; &lt;br /&gt;まず PowerShell を 今までの CMD.EXE に替え、コマンドラインシェルとして使用してみましょう。     &lt;br /&gt;Windows ７(手元では Ultimateを使用しています) のスタートメニューからは、管理ツール内の &amp;quot;Windows PowerShell Modules&amp;quot; で起動します。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_01_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_01" border="0" alt="PowerShell_01" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_01_thumb.jpg" width="586" height="327" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;起動すると、上記のようにコンソールが開き表示されますが、慌てる必要はありません。    &lt;br /&gt;指示通りに &lt;strong&gt;&amp;quot;get-help about_signing”&lt;/strong&gt; と入力してみましょう。以下のようにヘルプ表示されます。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_02_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_02" border="0" alt="PowerShell_02" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_02_thumb.jpg" width="581" height="310" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Windows ７ 環境の既定では、スクリプトの実行権限が与えられていないので警告が出ていた状況ですが、ヘルプメッセージの通り、&lt;strong&gt;”set-executionpolicy remotesigned”&lt;/strong&gt; で権限設定すれば、次回以降の PowerShell コンソールの起動で警告が表示されなくなります。     &lt;br /&gt;ここで、覚えておいて欲しいのは、判らなくいことは &lt;strong&gt;”get-help&amp;quot;&lt;/strong&gt; で確認すればよいということです。     &lt;br /&gt;&lt;strong&gt;”get-help”&lt;/strong&gt; は引数に、使用したい不明な cmdlet、Alias、HelpFile (about_xxxxx)などを指定して、情報を引き出すことが可能です。&lt;/p&gt;  &lt;p&gt;次に、ファイル参照してみましょう。従来の CMD.EXE のように &lt;strong&gt;&amp;quot;dir&amp;quot;&lt;/strong&gt; も使用可能です。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_03_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_03" border="0" alt="PowerShell_03" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_03_thumb.jpg" width="576" height="331" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;PowerShell の &lt;strong&gt;&amp;quot;dir&amp;quot;&lt;/strong&gt; はどのように機能提供されているのか、&lt;strong&gt;”get-help” &lt;/strong&gt;してみましょう。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_04_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_04" border="0" alt="PowerShell_04" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_04_thumb.jpg" width="583" height="322" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;&amp;quot;Get-ChildItem&amp;quot;&lt;/strong&gt; に &lt;strong&gt;&amp;quot;dir&amp;quot;&lt;/strong&gt; という エイリアスがマッピングされている事が判ります。     &lt;br /&gt;実際に &lt;strong&gt;&amp;quot;Get-ChildItem&amp;quot;&lt;/strong&gt; でも同様の結果が取得されます。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_05_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_05" border="0" alt="PowerShell_05" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_05_thumb_1.jpg" width="590" height="326" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;PowerShell では 、&lt;strong&gt;&amp;quot;Get-ChildItem&amp;quot;&lt;/strong&gt; で、指定したリソースの下位オブジェクトが参照可能です。さきほどの &amp;quot;dir&amp;quot; も実際には従来の &lt;strong&gt;“dir”&lt;/strong&gt; ではありませんので、以下のようにレジストリ参照などもできてしまいます。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_04b_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_04b" border="0" alt="PowerShell_04b" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_04b_thumb.jpg" width="590" height="304" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;ここでは、従来との違いを見て頂きたいために &amp;quot;dir&amp;quot; エイリアスを使いましたが、このような動きを考えると、PowerShell を使っていく上では、&lt;strong&gt;&amp;quot;Get-ChildItem&amp;quot;&lt;/strong&gt; を使用されたほうが構文上自然です。     &lt;br /&gt;参照したいレジストリパスが予め判っている場合、コマンドラインで操作できるのは便利ですね。     &lt;br /&gt;    &lt;br /&gt;おまけですが、&lt;strong&gt;&amp;quot;ls&amp;quot;&lt;/strong&gt; エイリアスも用意されており、同様に &lt;strong&gt;&amp;quot;Get-ChildItem&amp;quot;&lt;/strong&gt; にマップされています。     &lt;br /&gt;こちらの方が、違和感がない方もいるでしょうし、便利は便利です。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_06_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="PowerShell_06" border="0" alt="PowerShell_06" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/PowerShellPowerShell_11D18/PowerShell_06_thumb.jpg" width="590" height="326" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;コマンドラインシェルとして、従来のコマンドプロンプト風に動かしてみましたが、いかがでしょうか。    &lt;br /&gt;ここまでで、興味がありましたら PowerShell コンソール上で&lt;strong&gt; &amp;quot;get-help *&amp;quot; &lt;/strong&gt;を実行してみてください。既定で使用できる Alias、Cmdlet、HelpFile が列挙されます。さらに、詳細を知りたい場合、&lt;strong&gt;”get-help”&lt;/strong&gt; の引数に、確認したい Alias、Cmdlet、HelpFile を指定して再実行すれば詳細が表示されます。&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;PowerShell は今まで、コマンドラインやスクリプティングでできなかったことが実現可能です。    &lt;br /&gt;ILM 一家では、従来のスクリプトでの困りごとや、運用事例との対比で PowerShell の優位な部分について、ご紹介できればと考えています。     &lt;br /&gt;    &lt;br /&gt;これから夏休みを取りたい     &lt;br /&gt;～ お父さんより ～&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3282663" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/_FB96D552B730A730EB30_+_2800_PowerShell_2900_/default.aspx">電動シェル (PowerShell)</category></item><item><title>[WinRM] Windows Remoe Management を使って、らくらく管理！- その1</title><link>http://blogs.technet.com/jpilmblg/archive/2009/08/17/winrm-windows-remoe-management-1.aspx</link><pubDate>Mon, 17 Aug 2009 13:54:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3274032</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3274032.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3274032</wfw:commentRss><description>&lt;p&gt;こんにちは。今週末に バリウム を飲みにいくのでぷるぷる震えている ぴろと です。&lt;/p&gt;  &lt;p&gt;先日、お父さんと Windows Remote Management ( 以下、WinRM) について話あっていたのですが、どうやら US では、WinRM と WMI のサポートチームは一緒だということが判明しました。そのため、私たちの Blog でも WinRM を取り上げなくては！ということで、第一弾として、さっぱり簡単レシピをご紹介させていただきます。(最近、仕事と ETロボコンに追われて Blog を書けてませんでした。ぴろとファンの皆様申し訳ございません)&lt;/p&gt;  &lt;p&gt;- そもそも WinRM ってなんですか？&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;WinRM は、WS-Management プロトコルのマイクロソフト実装です。WS-Management プロトコルは、さまざまなベンダが提供するハードウェアやオペレーティング システムの相互運用を可能にする標準的なファイアウォールに対応した SOAP ベースのプロトコルです。というのは大袈裟な言い方ですが、WinRM により、HTTP や HTTPS などの標準的なインターネット プロトコルを使用してコンピュータをリモート管理できるようになります。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;ここで、標準的なファイアウォールに対応というところがいいですね！ 最近の流行は、何でも HTTPS (Windows Server 2008 R2 の Hosted Mode で使用されるのも HTTPS) ですし、WMI を用いたリモート管理の場合、Port 135 (Remote Procidure Call) のポートが開いてなくてはいけませんものね！&lt;/p&gt;  &lt;p&gt;構成を行うのも、割と簡単です。以下のサポート技術情報を参考ください。&lt;/p&gt;  &lt;p&gt;How to enable Windows Remote Shell    &lt;br /&gt;&lt;a title="http://support.microsoft.com/kb/555966/en-us" href="http://support.microsoft.com/kb/555966/en-us"&gt;http://support.microsoft.com/kb/555966/en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;これで、あなたの端末も WinRM で管理できちゃいます。&lt;/p&gt;  &lt;p&gt;また、WMI と同じくスクリプトでの管理も容易です。”Hey,Scripting Guy!” にて公開されているスクリプトがあったので、あわせてご紹介させていただきます。&lt;/p&gt;  &lt;p&gt;Hey, Scripting Guy! あの世からのデスクトップ管理    &lt;br /&gt;&lt;a title="http://technet.microsoft.com/ja-jp/magazine/2007.11.heyscriptingguy.aspx" href="http://technet.microsoft.com/ja-jp/magazine/2007.11.heyscriptingguy.aspx"&gt;http://technet.microsoft.com/ja-jp/magazine/2007.11.heyscriptingguy.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hey, Scripting Guy! 帰ってきた WinRM    &lt;br /&gt;&lt;a title="http://technet.microsoft.com/ja-jp/magazine/2007.12.heyscriptingguy.aspx" href="http://technet.microsoft.com/ja-jp/magazine/2007.12.heyscriptingguy.aspx"&gt;http://technet.microsoft.com/ja-jp/magazine/2007.12.heyscriptingguy.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;すごいネーミングセンスですね！”帰ってきた”と聞くと、”帰マン” とか “新マン”とかを連想する人が多いチームメンバーたちに囲まれて、軽いジェネレーションギャップを感じざるを得ないのはここだけの話です。&lt;/p&gt;  &lt;p&gt;VB や C# を使って開発されている場合は、WMI みたいに System.Management 名前空間を用いて開発されているかと存じます。WinRM は、WinRM Scripting API と WinRM C++ API が用意されています。オートメーション インタフェースが公開されているので、WinRM Scripting API を使って実装できます。次回は、サンプルを含めて実装を行っていく予定です！&lt;/p&gt;  &lt;p&gt;今後は、WMI だけではなく ”WinRM” も Blog で盛り上げて行きたいと思いますので、どうぞよろしくお願いいたします！&lt;/p&gt;  &lt;p&gt;～ すぐにコースアウトするミニ四駆しか作れない ぴろと より～&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3274032" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/_305E633066304D305F30_+WinRM/default.aspx">帰ってきた WinRM</category></item><item><title>[MSDN/Technet] ついに Windows7 提供開始！ダウンロード可能になりました。(Ver1.01)</title><link>http://blogs.technet.com/jpilmblg/archive/2009/08/07/msdn-windows7.aspx</link><pubDate>Fri, 07 Aug 2009 04:46:46 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3271362</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3271362.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3271362</wfw:commentRss><description>&lt;p&gt;&lt;font color="#3c3c3c"&gt;みなさんごきげんよう。ういこです。無事、アメリカから帰国しました。帰国後は素敵な時差ぼけや、お弁当作りでギブアップしたりいろいろでした。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;さて、今日は Windows 7 がついに MSDN サブスクライバー ダウンロードに Up されたことをご報告申し上げます。どうやら昨日 up された様子です。(&lt;strong&gt;Technet もです！&lt;/strong&gt;)&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#3c3c3c"&gt;&lt;strong&gt;MSDN サブスクライバ ダウンロード ログイン&lt;/strong&gt;        &lt;br /&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/subscriptions/dd179326.aspx"&gt;&lt;font color="#0000ff"&gt;http://msdn.microsoft.com/ja-jp/subscriptions/dd179326.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;(8/7 11 AM update1)   &lt;br /&gt;&lt;font color="#3c3c3c"&gt;日本時間の深夜 2 AM に Up されたようです。 &lt;strong&gt;ちなみに、Windows Server 2008 R2 はまだのようです&lt;/strong&gt;。(8/7)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Professional       &lt;br /&gt;Home Premium        &lt;br /&gt;Home Basic (※ x86 のみ)        &lt;br /&gt;Ultimate        &lt;br /&gt;Enterprise        &lt;br /&gt;Starter (※ x86 のみ)        &lt;br /&gt;デバッグ シンボル(x86, x64)&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Windows 自動インストール キット (WAIK) &lt;/strong&gt;&lt;/font&gt;と&lt;strong&gt;&lt;font color="#0080ff"&gt;言語パックの日本語版&lt;/font&gt;&lt;/strong&gt;も Up されています。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;&lt;strong&gt;Ultimate、Enterprise のみ、FileTransferManager からのダウンロードに制限があるようです。&lt;/strong&gt;      &lt;br /&gt;[ダウンロード] ボタンがクリックできません。      &lt;br /&gt;Top Download サイトからは、後述の Akamai のダウンロード マネージャを使ってダウンロードするようになっています。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;しかし、早速ログインしてはやる気持ちがあるのはわかるのですが、まあいまはひとまず落ち着きましょう。&lt;strong&gt;&lt;font color="#3c3c3c"&gt;いきなり罠があります。&lt;/font&gt;日本人であると、わりと「言語 : &lt;/strong&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Japanese&lt;/font&gt;&lt;/strong&gt;」が最初から選ばれている状態が多いと思うのですが、ここを「言語 : &lt;strong&gt;&lt;font color="#8080ff"&gt;English&lt;/font&gt;&lt;/strong&gt;」にしないと、左ペインの “Windows 7” を選んでも、&lt;strong&gt;ダウンロード候補出てきません&lt;/strong&gt;。まだ英語版しかないからなんですね。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_20.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_9.png" width="623" height="143" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;↑ここを、こうします↓ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_22.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_10.png" width="618" height="170" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;これで、&lt;font color="#0000ff"&gt;Windows 7&lt;/font&gt; を左ペインで選べば、出てきますよ。ただ、よく見ると、「ダウンロード」リンクがグレーアウトしてるので、一瞬あせりますが、”&lt;font color="#0000ff"&gt;詳細情報&lt;/font&gt;” をクリックすればよいです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_4.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_1.png" width="674" height="308" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;↓&lt;font color="#0000ff"&gt;詳細情報&lt;/font&gt;をクリックしたところです。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_6.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_2.png" width="687" height="163" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;詳細情報をクリックすると、したが展開され、まあ要は青字の&lt;font color="#0000ff"&gt; Top Downloads&lt;/font&gt; をクリックしろってことですね。クリックすると、以下のリンクに行きます。ここで注意が。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="https://msdn.microsoft.com/ja-jp/subscriptions/downloads/bb608344.aspx" href="https://msdn.microsoft.com/ja-jp/subscriptions/downloads/bb608344.aspx"&gt;&lt;font color="#0000ff"&gt;https://msdn.microsoft.com/ja-jp/subscriptions/downloads/bb608344.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;&amp;quot;&lt;font color="#0080ff"&gt;下記の一覧で項目をクリックすると Top Subscriber Downloads (ダウンロード サブスクライバ ランキング) の一部にアクセスできます。この新しい機能にアクセスするには、&lt;strong&gt;Akamai Technologies Download Manager Browser&lt;/strong&gt; アドオンをインストールしてこれらのファイルにアクセスする必要があります。&lt;/font&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;･･･つまり、ダウンロードは、今までの File Transfer Manager ではない、Akamai なんとかって言うのが使われるように変更されたのです。つまり、すでに他の OS やらなにやらを MSDN サブスクライバーダウンロードから落としたことがある環境でも、&lt;strong&gt;Ultimate / Enterprise 落とすためには、新しい ActiveX を入れなくてはいけない&lt;/strong&gt;のです。(8/7 現在) これに、20 秒くらいかかることがあります。気長に待ちましょう。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_8.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_3.png" width="667" height="479" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;上記より、iso イメージのリンクをクリックすると、こんな風にでます。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_12.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_5.png" width="653" height="169" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;そして、ActiveX のダウンロードが開始されます。インストールしないと、スーパーマリオの 8-4 みたいに、&lt;strong&gt;上記ページの無限ループ&lt;/strong&gt;になるので必ず入れてください。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_14.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_6.png" width="660" height="168" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;インストールする、を選んでください。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_16.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_7.png" width="539" height="198" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;ダウンロードが開始されます。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_18.png"&gt;&lt;font color="#3c3c3c"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jpilmblg/WindowsLiveWriter/MSDNWindows7_976D/image_thumb_8.png" width="688" height="164" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#3c3c3c"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;ここまでいけばあとはこっちのもんです。ダウンロードしまくってください。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;それでは、取り急ぎですが皆様 Windows 7 をかわいがってあげてください！よろしくお願いします。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#3c3c3c"&gt;～ ういこう&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3271362" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>[ADSI プログラミング] お役立ちツールのご紹介</title><link>http://blogs.technet.com/jpilmblg/archive/2009/07/30/adsi-2.aspx</link><pubDate>Thu, 30 Jul 2009 12:38:32 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3269288</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3269288.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3269288</wfw:commentRss><description>&lt;p&gt;こんにちは、 ILM 一家のパパ ( お父さん ) です。    &lt;br /&gt;今週は、一家のお母さん(ういこさん)がいない、非常に寂しい日々を送っています。 ピロトと二人で留守を守り、指折り数えて帰りを待ってます。また、今月は余暇も非常にバタバタしていまして、ブログ書き込みもお休みがちでした、読者の方すみません。&lt;/p&gt;  &lt;p&gt;さて、寂しさのあまりテンションも低い状況ですが、気を取り直してお役立ち情報をご紹介することにしましょう。    &lt;br /&gt;過去に製品の管理ツール、サポートツール、リソースキット等のユーティリティをご紹介しましたが、我々サポートエンジニアが、その他、トラブルシュートや動作の診断に使用しているツールは他にも多数あります。&lt;/p&gt;  &lt;p&gt;まず、サイトを見ていただきましょう。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;img title="Windows Sysinternals" alt="Windows Sysinternals" src="http://i.technet.microsoft.com/dd183194.hero_windows_sysinternals(en-us,MSDN.10).gif" /&gt;       &lt;br /&gt;&amp;#160;&lt;a title="http://technet.microsoft.com/ja-jp/sysinternals/default.aspx" href="http://technet.microsoft.com/ja-jp/sysinternals/default.aspx"&gt;http://technet.microsoft.com/ja-jp/sysinternals/default.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;ここで紹介しているツール類は 10年以上前から使っていたものですが、以前は 他社(Sysinternals 社)のツールとしてご紹介に難がある状況がありました。2006年に マイクロソフトが買収したことにより Technet のサイトに内包されることとなっています。    &lt;br /&gt;このサイトには、我が Blog で扱っている ADSI、WMI、ILM のみでなく、一般的な Windows トラブル、プログラミングトラブルの診断に使用できるツールが数多く登録されています。     &lt;br /&gt;    &lt;br /&gt;ADSI , WMI プログラミングで有効と考えられるツールとしては、以下のようなものがあります。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb963907.aspx"&gt;AD Explorer (英語)&lt;/a&gt;       &lt;br /&gt;Active Directory Explorer は、Active Directory (AD) の高度なビューアーおよびエディターです。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/bb897539.aspx"&gt;AD Insight (英語)&lt;/a&gt;       &lt;br /&gt;AD Insight は、Active Directory クライアント アプリケーションのトラブルシューティングを目的とした LDAP (ライトウェイト ディレクトリ アクセス プロトコル) リアルタイム監視ツールです。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb963906.aspx"&gt;AdRestore (英語)&lt;/a&gt;       &lt;br /&gt;削除した Server 2003 の Active Directory オブジェクトを復元します。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb897437.aspx"&gt;TCPView (英語)&lt;/a&gt;       &lt;br /&gt;アクティブなソケットを表示するコマンドライン ビューアーです。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb664922.aspx"&gt;AccessChk (英語)&lt;/a&gt;       &lt;br /&gt;このツールでは、ファイル、レジストリ キー、Windows サービスに対して、指定したユーザーやグループが持つアクセス権を確認できます。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb897332.aspx"&gt;AccessEnum (英語)&lt;/a&gt;       &lt;br /&gt;シンプルかつ強力なセキュリティ ツールです。システム上のディレクトリ、ファイル、およびレジストリ キーについて、どのユーザーがどのアクセス権を持っているかどうかを確認できます。このツールを使用すると、アクセス許可のセキュリティ ホールを見つけることができます。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx"&gt;Process Explorer (英語)&lt;/a&gt;       &lt;br /&gt;プロセスが開いたファイル、レジストリ キーなどのオブジェクト、読み込んだ DLL などを調べます。この非常に強力なユーティリティでは、各プロセスの所有者も表示できます。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb896649.aspx"&gt;PsTools&lt;/a&gt;       &lt;br /&gt;PsTools スイートには、ローカル コンピューターまたはリモート コンピューターで実行されているプロセスの一覧の取得、リモートでのプロセスの実行、コンピューターの再起動、イベント ログのダンプなど、さまざまな操作を行うためのコマンド ライン ユーティリティが含まれています。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;なお、以下のようなスクリーンセーバもあるようですが、どうしたものでしょう.... サポート担当者としては微妙な気持ちです。&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://technet.microsoft.com/ja-jp/sysinternals/bb897558.aspx"&gt;BlueScreen (英語)&lt;/a&gt;       &lt;br /&gt;このスクリーン セーバーは、ブルー スクリーンを正確に模した画面を表示するだけでなく、CHKDSK を含む再起動を模した画面も表示します。このユーティリティは、Windows NT 4、Windows 2000、Windows XP、Server 2003、および Windows 9x で使用できます。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;いかがですか？    &lt;br /&gt;使えそうなツールはありますでしょうか。     &lt;br /&gt;またの機会に、この中の幾つかを具体的に紹介したいと思います。     &lt;br /&gt;    &lt;br /&gt;今週は ろんりーはーと な     &lt;br /&gt;～ お父さんより ～&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3269288" width="1" height="1"&gt;</description></item><item><title>[AD/ADAM] 10000件以上のデータが登録された環境でサーバソートすると 0x8007202C (3)/4 – DirectorySearcher.VirtualListView</title><link>http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-3-4-directorysearcher-virtuallistview.aspx</link><pubDate>Fri, 24 Jul 2009 10:09:30 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3267733</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3267733.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3267733</wfw:commentRss><description>&lt;p&gt;&lt;font color="#353535"&gt;みなさんごきげんよう、ういこです。     &lt;br /&gt;これまでは、大量データ保持の AD / ADAM に対してソートを行う際の問題についてお伝えしてまいりました。今回は、回避策として、Virtual List View が使えるか？という内容です。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;font color="#353535"&gt;【問題】&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;font color="#353535"&gt;10000 件以上、大量に ADAM および AD にオブジェクトが登録されている環境に対し、ソートを実行すると &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;b&gt;サーバーは要求された重大な拡張子をサポートしていません。(0x8007202C)&amp;quot; &lt;/b&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;というエラーが返され、ソートができない。しかし、Name など一部の属性では問題なく動作する。&lt;b&gt; ただし、降順ソートの場合、すべての属性に対してソートができず、上記エラーが発生する。 &lt;/b&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;&lt;b&gt;&lt;u&gt;【解説】Active Directory の大容量データに対するサーバソートについて          &lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-1-4.aspx"&gt;&lt;font color="#363636"&gt;(1) 昇順ソート ～ インデックスつき属性と、インデックスなし属性での挙動の違い&lt;/font&gt;&lt;/a&gt;&lt;/u&gt;&lt;/font&gt;    &lt;br /&gt;&lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-2-4.aspx" target="_blank"&gt;&lt;font color="#363636"&gt;(2) 降順ソート ～ 既知の問題&lt;/font&gt;&lt;/a&gt;&lt;font color="#353535"&gt;      &lt;br /&gt;&lt;strong&gt;(3) Virtual List View は対処方法となりえるか？← このコンテンツです！&lt;/strong&gt;      &lt;br /&gt;(4) まとめ (4 回目予定) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;&lt;strong&gt;- これまでの経緯       &lt;br /&gt;&lt;/strong&gt;サーバ ソート（データをサーバ側で「整える（取得したデータの並べ替えを行う））の昇順ソートの場合は、インデックス化されていない属性をソートキーに指定した場合は、データの並べ替えのためサーバ側で一時的にデータを格納するテーブルが作成され、このテーブル内で指定されたキーによる整列を行います。この一時的なソートに用いられるテーブルのサイズは、&amp;quot;MaxTempTableSize&amp;quot; という LDAP ポリシーで決められており、既定は 10000 です。      &lt;br /&gt;ソートする対象のレコード数が MaxTempTableSize を超えた場合、ソート処理は行われません。      &lt;br /&gt;一方、インデックス化された属性のソートの場合にはこの一時データ格納テーブルを使わないためこの制限に抵触しません。このため、インデックス化された属性の場合はうまくいき、インデックス化されてない属性をソートキーに指定して昇順ソートを行った場合は上記問題が発生してしまうことになるのでした。      &lt;br /&gt;そして、降順ソート時は MaxTempTableSize のサイズ制限抵触以外の問題が存在するため、インデックス化属性であっても降順ソート時大量件数が存在する場合、非インデックス属性の昇順ソート時の動作と同様のエラーが発生する問題があります。この問題は製品の障害となります。そのため、降順ソートを実装する必要があるシステムの場合は、属性のインデックス化は回避手段とはなりません。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;&lt;strong&gt;- VLV は回避策にならない       &lt;br /&gt;&lt;/strong&gt;MSDN を見ると、VLV は大きなサイズの ResultSet に向いてます、みたいなことが書いてあるのですが、実際は、VLV も Temp tableを使って中間結果を保持することで動作する設計です。しかし、この Temp Table はすなわち MaxTempTableSize が制限値になるため、VLV の計算に必要な中間結果がこの値を超えた場合、昇順ソートのインデックスなし属性がソートキーに指定された場合と同様処理が中断することになります。よって、回避策として有効な手段には残念ながらならないという結論になります。なお、問題発生時のエラーは、非インデックス属性の大量データの昇順ソート実行時と同じく「&amp;quot;サーバーは要求された重大な拡張子をサポートしていません。(0x8007202C)」となります。なお、MaxTempTableSize のサイズをオブジェクト数をカバーする値に変更しますと、正常に Resultset が返されるようになります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;&lt;strong&gt;- VLV サンプル コード &lt;/strong&gt;      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.ComponentModel;      &lt;br /&gt;using System.Data;      &lt;br /&gt;using System.Drawing;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Text;      &lt;br /&gt;using System.Windows.Forms;      &lt;br /&gt;using System.DirectoryServices; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;namespace WindowsFormsApplication2     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class Form1 : Form      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Form1()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void button1_Click(object sender, EventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SearchResultCollection results;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (DirectorySearcher searcher = new DirectorySearcher())      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://CN=Users,DC=corp,DC=contoso,DC=com&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.SearchRoot = de;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.Filter = &amp;quot;(objectclass=*)&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.PropertiesToLoad.Add(&amp;quot;samaccountname&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.PropertiesToLoad.Add(&amp;quot;name&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.PropertiesToLoad.Add(&amp;quot;displayName&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.PropertiesToLoad.Add(&amp;quot;mail&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.SearchScope = SearchScope.Subtree;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectoryVirtualListView virtualList = new DirectoryVirtualListView(0, 50, 10);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string searchAttributeName = null;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searchAttributeName = &amp;quot;name&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SortOption sort = new SortOption(searchAttributeName, SortDirection.Descending);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.Sort = sort;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.VirtualListView = virtualList;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; results = searcher.FindAll();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (results.Count &amp;gt;= 0)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(searcher.VirtualListView.ApproximateTotal);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MessageBox.Show(searcher.VirtualListView.ApproximateTotal.ToString());      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#353535"&gt;～ ういこう ～&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3267733" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/ADSI/default.aspx">ADSI</category><category domain="http://blogs.technet.com/jpilmblg/archive/tags/_6B70886D5730_+_2800_TroubleShoot_2900_/default.aspx">火消し (TroubleShoot)</category><category domain="http://blogs.technet.com/jpilmblg/archive/tags/Active+Directory/default.aspx">Active Directory</category><category domain="http://blogs.technet.com/jpilmblg/archive/tags/AD+_1D521A7DE87D_/default.aspx">AD 初級編</category></item><item><title>[AD/ADAM] 10000件以上のデータが登録された環境でサーバソートすると 0x8007202C (2)/4 - 降順ソートの障害</title><link>http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-2-4.aspx</link><pubDate>Fri, 24 Jul 2009 08:18:41 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3267704</guid><dc:creator>jpilmblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jpilmblg/comments/3267704.aspx</comments><wfw:commentRss>http://blogs.technet.com/jpilmblg/commentrss.aspx?PostID=3267704</wfw:commentRss><description>&lt;font color="#373737"&gt;みなさんごきげんよう、ういこです。   &lt;br /&gt;今回も、前回と同じく、大量件数保持 AD (or ADAM) に対してのサーバソートについての記事です。ただし、今回は降順ソートの挙動についてとなります。昇順ソートと降順ソート、基本は同じ…はずだと思いきや、じつは昇順ソートと降順ソート、内部実装（プログラムの書き方）自体が異なっているのです。    &lt;br /&gt;さらに、降順の場合だけ、障害があり、二重の意味で挙動が異なるという結果となってしまっています。    &lt;br /&gt;降順ソートでこの問題にすでに直面されていらっしゃった皆様、弊社製品の不具合のためにご迷惑をおかけしたことをお詫び申し上げます。 &lt;/font&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;&lt;u&gt;【問題】&lt;/u&gt;        &lt;br /&gt;&lt;/strong&gt;10000 件以上、大量に ADAM および AD にオブジェクトが登録されている環境に対し、ソートを実行すると &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt; &lt;/font&gt;&lt;font color="#0000a0"&gt;&lt;strong&gt;&amp;quot;サーバーは要求された重大な拡張子をサポートしていません。(0x8007202C)&amp;quot; &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;というエラーが返され、ソートができない。しかし、Name など一部の属性では問題なく動作する。&lt;/font&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt; ただし、降順ソートの場合、すべての属性に対してソートができず、上記エラーが発生する。 &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#373737"&gt;&lt;strong&gt;【解説】Active Directory の大容量データに対するサーバ ソートについて         &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-1-4.aspx"&gt;&lt;font color="#808080"&gt;(1) 昇順ソート ～ インデックスつき属性と、インデックスなし属性での挙動の違い&lt;/font&gt;&lt;/a&gt;&lt;/u&gt;&lt;font color="#373737"&gt;&lt;strong&gt;       &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;(2) 降順ソート ～ 既知の問題&amp;#160; &lt;font color="#0080ff"&gt;← このコンテンツです！&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0"&gt;     &lt;br /&gt;(3) Virtual List View は対処方法となりえるか？(3 回目予定)      &lt;br /&gt;(4) まとめ (4 回目予定) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;- &lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-1-4.aspx" target="_blank"&gt;これまで&lt;/a&gt;の経緯&lt;/strong&gt;      &lt;br /&gt;サーバ ソート（データをサーバ側で「整える（取得したデータの並べ替えを行う））の昇順ソートの場合は、インデックス化されていない属性をソートキーに指定した場合は、データの並べ替えのためサーバ側で一時的にデータを格納するテーブルが作成され、このテーブル内で指定されたキーによる整列を行います。      &lt;br /&gt;この一時的なソートに用いられるテーブルのサイズは、&amp;quot;&lt;strong&gt;MaxTempTableSize&lt;/strong&gt;&amp;quot; という LDAP ポリシーで決められており、既定は 10000 です。      &lt;br /&gt;ソートする対象のレコード数が MaxTempTableSize を超えた場合、ソート処理は行われません。      &lt;br /&gt;一方、インデックス化された属性のソートの場合にはこの一時データ格納テーブルを使わないためこの制限に抵触しません。      &lt;br /&gt;このため、インデックス化された属性の場合はうまくいき、インデックス化されてない属性をソートキーに指定して昇順ソートを行った場合は上記問題が発生してしまうことになるのでした。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;- 降順ソート時の現象およびその原因&lt;/strong&gt;      &lt;br /&gt;&lt;strong&gt;&lt;font color="#0000a0"&gt;降順ソートに関しては、MaxTempTableSize のサイズ制限抵触以外の問題が存在し、インデックス付与済みの属性もこの問題の影響を受けてしまいます。&lt;/font&gt;&lt;/strong&gt;昇順ソートと降順ソートは、同じ処理ではありません。内部でどちらのソートを実行するかという目印（フラグ）の値を保持しており、処理が分岐しています。      &lt;br /&gt;インデックス化属性であっても降順ソート時大量件数が存在する場合、非インデックス属性の昇順ソート時の動作と同様のエラーが発生する問題があります。この問題は製品の障害となります。そのため、降順ソートを実装する必要があるシステムの場合は、属性のインデックス化は回避手段とはなりません。      &lt;br /&gt;実は、この問題は修正リクエストが米国にて行われたのですが、修正時の副作用が広範囲になるという判断から修正が見送られたという経緯があります。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;- 再現サンプル コード &lt;/strong&gt;      &lt;br /&gt;さて、&lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/06/24/ad-ad-adam.aspx" target="_blank"&gt;[Active Directory スキーマ] スナップ イン&lt;/a&gt;を使い、インデックスがふられていない属性にインデックス化したとします。昇順ソートはうまくいくでしょう。しかし、降順ソートにした場合、解消したはずの &amp;quot;サーバーは要求された重大な拡張子をサポートしていません。(0x8007202C)&amp;quot; がまた発生してしまいます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&amp;lt;&amp;lt; VBScript の場合 &amp;gt;&amp;gt;     &lt;br /&gt;cmd.Properties(&amp;quot;Sort On&amp;quot;) = &amp;quot;company &lt;strong&gt;&lt;font color="#0080ff"&gt;DESC&lt;/font&gt;&lt;/strong&gt;&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&amp;lt;&amp;lt;.NET Framework の場合&amp;gt;&amp;gt;     &lt;br /&gt;ds.Sort.Direction = SortDirection.&lt;strong&gt;&lt;font color="#0080ff"&gt;Descending&lt;/font&gt;&lt;/strong&gt;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;(※) サンプル全文はこちら ⇒ &lt;/font&gt;&lt;a href="http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-1-4.aspx"&gt;http://blogs.technet.com/jpilmblg/archive/2009/07/24/ad-adam-10000-0x8007202c-1-4.aspx&lt;/a&gt;&lt;font color="#373737"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;- 対処方法&lt;/strong&gt;      &lt;br /&gt;対処方法は、LDAP ポリシーの MaxTempTableSize を拡張することだけです。拡張方法はこちらがご参考いただけます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;&lt;strong&gt;[AD初級編] AD と ADAM の微妙な違い 2 ～ ntdsutil と dsmgmt で LDAP ポリシーを管理しよう！～ &lt;/strong&gt;&lt;a title="http://blogs.technet.com/jpilmblg/archive/2009/06/25/ad-ad-adam-2-ntdsutil-dsmgmt-ldap.aspx" href="http://blogs.technet.com/jpilmblg/archive/2009/06/25/ad-ad-adam-2-ntdsutil-dsmgmt-ldap.aspx"&gt;http://blogs.technet.com/jpilmblg/archive/2009/06/25/ad-ad-adam-2-ntdsutil-dsmgmt-ldap.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;上記リンクのページの &amp;quot;dsmgmt : ADAM でポリシーを変更する (AD も手順 2 からは共通) &amp;quot; の 7. のところを、以下のようにして、8. の commit changes を実行すればよいだけです。以下は、サイズを 50000 件でも対応できるように拡張した例です。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;ldap policy : set MaxTempTableSize to 50000   &lt;br /&gt;&lt;font color="#373737"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;あらためて弊社製品の問題につきまして製品担当としてお詫び申し上げます。 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#373737"&gt;～ ういこう ～&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3267704" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/jpilmblg/archive/tags/ADSI/default.aspx">ADSI</category><category domain="http://blogs.technet.com/jpilmblg/archive/tags/_6B70886D5730_+_2800_TroubleShoot_2900_/default.aspx">火消し (TroubleShoot)</category><category domain="http://blogs.technet.com/jpilmblg/archive/tags/Active+Directory/default.aspx">Active Directory</category><category domain="http://blogs.technet.com/jpilmblg/archive/tags/AD+_1D521A7DE87D_/default.aspx">AD 初級編</category></item></channel></rss>