• ミニ セットアップで新規ユーザーの作成をスキップする方法

    こんばんは。Windows テクノロジー サポートの吉井です。

    今日は、Windows 7 の展開の際、Sysprep を実施したイメージのミニ セットアップにて、新規ユーザーの作成をスキップする方法についてご紹介します。

    0. 概要

    Sysprep されたイメージを初めて起動すると、ミニ セットアップと呼ばれる OS の新規インストール時と似た初期設定画面が表示されます。
    ここでは言語、時刻の設定や、新規ユーザーの作成、ネットワークの設定などを行います。

    既定では、このミニ セットアップにて新規ユーザーを作成する必要がありますが、"応答ファイル" と呼ばれる設定ファイルを使用することで、ミニ セットアップにおけるユーザー作成をスキップすることができます。

    (※ ただし、ユーザーが一人もいない状況になってしまうと誰もログオンできなくなりますので、そういった状況にならないよう注意してください。)

    "応答ファイル" はこれまでも数回このブログで紹介していますが、弊社のダウンロード センターにある Windows 自動インストール キット (AIK) 内に含まれる Windows システム イメージ マネージャー (SIM) を用いて作成することができます。

    以下に、新規ユーザー作成をスキップする方法について、Windows AIK の入手とインストールから、応答ファイルの作成、及び、Sysprep の実行まで一通り説明します。


    1. Windows AIK を準備します。

    Windows AIK は以下のサイトよりダウンロード可能です。

     Windows 7 用の Windows 自動インストール キット (AIK)
     http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&displaylang=ja

    Windows AIK のインストール手順は、次の技術情報をご覧ください。

     4. ステップ 1. テクニシャン コンピューターの準備
     http://technet.microsoft.com/ja-jp/windows/ee676464.aspx
     "1.1. Windows 自動インストール キット (Windows AIK) のインストール" に
     手順が記載されています。(1.2 以降の作業は今回は実施の必要はありません。)


    2. Windows システム イメージ マネージャー (SIM) を利用して応答ファイルを作成します。

    1. スタート メニューから [Windows システム イメージ マネージャー] を開きます。

    2. Windows システム イメージ マネージャーが起動します。
       [Windows イメージ] ペインの、[Windows イメージまたはカタログ ファイルを指定してください] を右クリックし、[Windows イメージの選択] をクリックします。

    3. [Windows イメージの選択] が表示されます。
       Windows 7 のインストール メディアを DVD ドライブに挿入し、DVD 内の Sources フォルダー内にある Install.wim または、.clg の拡張子を持つ カタログ ファイルを選択し、[開く] をクリックします。

      ※ Install.wim を使用する場合は、一旦ローカル ディスク上に Install.wim ファイルをコピーし、ローカル ディスク上にある Install.wim を開いてください。

    4. 次に、[応答ファイル] ペインで、[応答ファイルを作成または開きます] を右クリックし、[新しい応答ファイル] をクリックします。

    5. 応答ファイルに対して、コンポーネントを追加します。
       [Windows イメージ] ペインに設定項目 (コンポーネント) がリストされています。
       今回は、[Windows イメージ] ペインから、[Components] を展開し、[Microsoft-Windows-Shell-Setup_neutral (※)] - [UserAccounts] - [LocalAccounts] - [LocalAcount] を右クリックし、[パス 7 oobeSystem に設定を追加] をクリックします。

    ※ なお、コンポーネントの名称の Microsoft-Windows-Shell-Setup の前には x86 または amd64 の接頭語がつきます。また、後ろにはバージョン番号が記載されていますので、適宜お読み替えください。

    6. [応答ファイル] ペインに、[Microsoft-Windows-Shell-Setup_neutral] が追加されます。
       [応答ファイル] ペインの [7 oobeSystem] - [Microsoft-Windows-Shell-Setup_neutral] - [UserAccounts] - [LocalAccounts] - [LocalAccount] をクリックします。

    7. [LocalAccount プロパティ] ペインが表示されます。
       [LocalAccount プロパティ] の [設定] 項目で以下を設定します。
       Group : Administrators
       Name : Administrator


    8. [Windows システム イメージ マネージャー] の [ファイル] メニューから、
       [名前を付けて保存] をクリックし、任意の名前をつけて応答ファイルを保存します。 (例: unattend.xml 等の名称で保存します。)

    参考イメージ

    - 参考資料
     LocalAccounts
     http://technet.microsoft.com/ja-jp/library/ff715535(en-us,WS.10).aspx

     LocalAccount
     http://technet.microsoft.com/ja-jp/library/ff715847(en-us,WS.10).aspx

    なお、Windows 7 では既定で Administrator アカウントが無効化されていますが、この手順は Administrator アカウントが無効の状態でも有効です。
    また、Administrator アカウントが自動的に有効化されることもありません。


    3. 作成した応答ファイルを指定して、Sysprep を実行します。

    作成した応答ファイルを指定して、Sysprep を実行するには、以下のコマンドを実行します。

    1. コマンド プロンプトを管理者権限で起動します。
    2. 以下のコマンドを実行します。
    %systemroot%\System32\Sysprep\sysprep.exe /oobe /generalize /unattend:<応答ファイルのパス>
    例: %systemroot%\System32\Sysprep\sysprep.exe /oobe /generalize /unattend:unattend.xml

    なお、応答ファイルはその他の方法でも指定できます。詳細は以下の資料を参照してください。

     Windows セットアップの実行方法
     http://technet.microsoft.com/ja-jp/library/dd744269(WS.10).aspx


    - 参考 : その他の項目もスキップ (応答ファイルで指定) する方法について

    上記手順 2-5 にて、以下の Technet の記載されているコンポーネントを追加して設定することで、ミニ セットアップ全体をスキップすることも可能です。
    よろしければご参照ください。

     [Windows へようこそ] を自動化する
     http://technet.microsoft.com/ja-jp/library/dd744547(WS.10).aspx


    - その他参考資料

     Sysprep とは
     http://technet.microsoft.com/ja-jp/library/cc721940(WS.10).aspx

     Windows 7 展開センター
     http://technet.microsoft.com/ja-jp/windows/ee517406.aspx

     Windows 7 標準クライアント イメージの作成手順
     http://technet.microsoft.com/ja-jp/windows/ee676462.aspx

     

  • リモート デスクトップ サービスのデプロイメント ガイド

    こんにちは。Windows テクノロジー サポートの大羽です。

     

    Windows Server 2008 のターミナル サービスおよび Windows Server 2008 R2

    リモートデスクトップ サービスのデプロイメント ガイドがリリース

    されましたのでお知らせします。

     

    以下のサイトより、ドキュメントをダウンロードしてご覧ください。

     

    Remote Desktop Services Deployment Guide

    http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=1d95a910-72a5-44ec-96db-6853f6f9dc5b

     

    Terminal Services Deployment Guide

    http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=13177173-c99c-4054-97ea-7ec7dd43ea6e

     

    本ガイドは、システム管理者およびシステムエンジニアの方々へ向けた

    ターミナルサービスおよびリモート デスクトップ サービスの展開ガイドになります。

     

    リモートデスクトップの役割サービスと機能、VDI  (仮想デスクトップ インフラストラクチャ)  環境の

    展開について纏めています。

     

    特に VDI に関しては、これまで機能評価ガイド以外に情報が公開されていなかったため、

    重宝するかと思います。

     

    Windows Server 2008 R2 機能評価ガイド

    http://download.microsoft.com/download/D/D/1/DD187274-7AF3-45FA-BA2D-C7033F097C66/R2RTM_EvalGuide_VDI.pdf

  • フェールオーバーのしきい値 (Windows Server 2008 編)

    こんにちは。Windows テクノロジー サポートの永野です。

    今回は、Windows Server 2008 のクラスタについてです。
    グループがノード間を何回フェールオーバーできるかご存知ですか?
    まずは、以下の KB をご覧ください。

    Failover/Failback Policies on Microsoft Cluster Server
    http://support.microsoft.com/kb/197047/en-us
    http://support.microsoft.com/kb/197047/ja (日本語機械翻訳)

    上記 KB のここに注目してください。
    ---
    The failover threshold is the number of times the group can fail over within the number of hours specified by the failover period.
    フェールオーバーしきい値は、フェールオーバー期間で指定された時間数内のグループがフェールオーバーできる回数です。
    ---

    フェールオーバーできる回数は、グループのプロパティの FailoverThreshold に格納されています。
    Cluster.exe で確認してみましょう。実行方法は、以下です。

    > Cluster.exe group "グループ名" /prop

    手元の環境で、実際に実行してみました。

    C:\>Cluster.exe group "msfcgenapp" /prop
     
    'msfcgenapp' のプロパティの一覧を作成しています:
     
    T  リソース グループ    名前                          
    -- -------------------- ------------------------------ -----------------------
    SR msfcgenapp           Name                           MSFCGenApp
    SR msfcgenapp           InternalState                  Online
    S  msfcgenapp           Description
    D  msfcgenapp           PersistentState                1 (0x1)
    D  msfcgenapp           FailoverThreshold              4294967295 (0xffffffff)
    D  msfcgenapp           FailoverPeriod                 6 (0x6)
    D  msfcgenapp           AutoFailbackType               0 (0x0)
    D  msfcgenapp           FailbackWindowStart            4294967295 (0xffffffff)
    D  msfcgenapp           FailbackWindowEnd              4294967295 (0xffffffff)
    M  msfcgenapp           AntiAffinityClassNames

    FailoverThreshold の値を確認します。
    0xffffffff ??
    これは無限にフェールオーバーするって言う意味?と思われるかもしれませんが、実は違うんです。
    FailoverThreshold が、0xffffffff に設定されているリソースは内部的に FailoverThreshold の値にクラスタを構成するノード数が設定されます。
    例えば、グループの FailoverThreshold の値は、2 ノード環境では 1、3 ノード環境であれば 2 となります。
    意外と少ないと思われる方もおられるかも知れません。
    そういった場合には、コマンド プロンプトから以下のコマンドを実行することで変更可能です。

    > cluster.exe group "クラスタ グループ" /prop FailoverThreshold=<変更する値>

    実行例)
    > cluster.exe group "クラスタ グループ" /prop FailoverThreshold=8

    クラスタの設定は奥深いので、ぜひ色々試してみてください。

    ※ Windows Server 2008 は GUI 表示が誤っている問題がありますので以下の資料も参照してください。

    The default group failover threshold value in the Windows Server 2008 Failover Cluster Management snap-in is incorrect
    http://support.microsoft.com/kb/950804/en-us

     

  • ダンプ ファイルの採取設定のポイント

    こんにちは。
    Windows テクノロジー サポートの磯垣です。

    今日はダンプ ファイル採取の注意点についてお話したいと思います。

    近頃、Windows 2000 / Windows Server 2003 32 bit のお問い合わせが少なくなり Windows Server 2008 のお問い合わせや、Windows Server 2003 であっても 64 bit のお問い合わせが多くなってきました。Windows Server 2003 でも 64 bit の場合や、Windows Server 2008 の場合にはダンプ ファイル採取設定のポイントが異なりますので、注意点をまとめてみました。

     (Windows Server 2008 SP1 の場合) 下記の技術情報を確認しましたか? 必要な修正プログラムは適用されていますか?

    • Dedicated Dump File を利用している場合 (サポート技術情報 950858, 957517)
    • Dynamic Hardware Partitioning を使っている場合 (サポート技術情報 960658)
    • システムパーティションがミラーボリュームの場合 (サポート技術情報 958933)
    • NMI を使ってダンプを採取する場合 (サポート技術情報 950904)
    • PAE かつ ATA/SATA ベースのデバイスを利用している場合 (サポート技術情報 953533)
    • システムにページ ファイルのサイズ管理を任せ��いる場合 (サポート技術情報 955635)
    • WHEA をサポートしている場合 (サポート技術情報 971877)
    • USB キーボードを使っている場合 (サポート技術情報 971284)
    • iSCSI からブートしている場合 (サポート技術情報 974922)

    (Windows Server 2008 SP2 の場合) 下記の技術情報を確認しましたか? 必要な修正プログラムは適用されていますか?

    • WHEA をサポートしている場合 (サポート技術情報 971877)
    • iSCSI からブートしている場合 (サポート技術情報 974922)

    (Windows Server 2003 64 bit, Windows Server 2008 64 bit 共通) ページ ファイルの容量は十分ですか?

    64 bit 環境の場合、カーネル メモリ ダンプの採取でも物理メモリ + 1 MB の容量が必要です。
    (2 GB と書いてあったら、それは 32 bit 環境について書かれています。)

    (Windows Server 2008 でカーネル ダンプ ファイルを採取する場合) 必要に応じ IgnorePagefileSize を設定しましたか?

    Windows Server 2003 64 bit 環境でカーネル ダンプを採取する際、物理メモリ量よりページ ファイルが小さくても、ある程度のサイズがあれば正しく採取できていました。
    Windows Server 2008 では動作自体が変更され、物理メモリ量よりページ ファイルが小さい場合はダンプの保存自体がなされなくなります。Windows Server 2003 と同等の動作とするには、サポート技術情報 949052 にしたがって、IgnorePagefileSize レジストリ値を設定する必要があります。)

    (Windows Server 2003, Windows Server 2008 共通) システム ボリュームの空き容量は十分ですか?

    システム ボリューム (通常 C:) には、ページ ファイルを作成した状態で、さらに、物理メモリ量と同じだけのボリュームの空き容量が必要となります。
    メモリ容量も非常に大きくなってきましたので、システム ボリュームにこれまでとは比較にならないほどの容量の空きが必要となりつつあります。

    システム ボリュームの空き容量が足りない場合、2008 なら、DedicatedDumpFile を設定するという手があります。

    DedicatedDumpFile
    http://blogs.msdn.com/b/ntdebugging/archive/2010/04/02/how-to-use-the-dedicateddumpfile-registry-value-to-overcome-space-limitations-on-the-system-drive-when-capturing-a-system-memory-dump.aspx

    そして、これまでご利用いただいていた製品と同様に、以下の点もチェックしてください。

    ご利用の手順は 32 bit 用ではありませんか?

    64 bit 環境に PAE は存在しないなど、32 bit 版とは手順が異なります。

    ハードウェアの自動障害回復機能をオフにしましたか?

    30 秒などのごく短い時間で自動回復するように設定している場合、ダンプ ファイルの生成が自動障害回復機能により中断されるかもしれません。

    NMI (ダンプ スイッチ)は搭載されていませんか?

    キーボードでは取れないダンプも NMI なら取れる場合もあります。NMI 機能が利用できる場合には、NMI を利用することでダンプ採取に失敗する可能性を低減できます。

    磯垣  順

    1. RemoteApp の動作について

      こんにちは。Windows テクノロジー サポートの大羽です。

       

      Windows Server 2008 および Windows Server 2008 R2 に導入されている RemoteApp

      すでにお馴染みのことと思いますが、この RemoteApp の内部動作は意外と知られていません。

      別途設定が必要になりますが、実は Windows XPWindows VistaWindows 7 なども

        RemoteApp サーバーとして構築可能です。このあたりはまたいずれご紹介します。

       

      今回は RemoteApp の内部動作に少しだけ触れてみたいと思います。

      トラブル発生時など、詳細な調査を行う際に役立てていただければ幸いです。

       

      RemoteApp は、リモート デスクトップ サービス コンポーネントの一つになりますので、

      基本部分の動作はリモートデスクトップと同じです。

      従いまして、ユーザー認証単位でセッションが管理され、アプリケーションの実体はサーバー側で

      動作して、画像情報がクライアント側に送られます。

      そのため、さもクライアント上で動作しているようにアプリケーションが動作するということになりますが、

      このあたりの動作は基本的にリモートデスクトップと一緒です。

       

      ただし、大きく異なっている点があります。それは「シェル」です。

      Windows のシェルと言えば、勿論エクスプローラ (explorer.exe)ですが、RemoteApp では

      エクスプローラが使われていません。

      代わりに「RDPShell」というシェルが動作しています。

       

      RemoteApp などのアプリケーションは、デスクトップ操作として比較して必要な処理は

      限られているため、エクスプローラシェルのフル機能は必要ありません。

      リソース面でもアプリケーション毎にエクスプローラを起動するのでは効率が良くありません。

       

      実際、タスクマネージャでみると、explorer.exe rdpshell.exe 10 倍ほどの

      リソースを使っています。

       

      イメージ名                     PID メモリ使用量

      ========================= ======== ============

      explorer.exe                   852     45,460 K

      rdpshell.exe                  3704      4,880 K

      ※テスト環境での参考値

       

      以上のようなことから、RemoteApp では RDPShell が採用されているわけですが、

      実際にどのような動作となるのか、具体的に解説していきたいと思います。

       

      RemoteApp にて、アプリケーションが起動される際の内部動作は、概ね以下のような動作となります。

       

      1. クライアントより、mstsc.exe を経由して RemoteApp サーバーへ接続要求を行い

         TS RemoteApp セッションを確立します。

       

      2. セッション作成後、サーバー上にて userinit.exe プロセスおよび RDPInit.exe

         プロセスが起動します。

         これらのプロセスは RemoteApp のシェルである RDPShelll.exe プロセスを

         管理するプロセスになります。

       

      3. バーチャル チャンネルを介して RemoteApp のコミュニケーションが開始します。

       

      4. RDPInit.exe プロセスがアプリケーションへのアクセス許可リストを確認し、

         許可リスト内にアプリケーションが存在している場合は、アプリケーションを

         起動します。

       

      5. アプリケーションが起動し、アプリケーション ウインドウを作成します。

       

      6. RDPShell プロセスは、そのアプリケーション ウインドウのオープン処理を

         フックして、ウインドウの情報をクライアントに送信します。

       

      7. クライアントは受信したウインドウを表示します。

       

      上記プロセス以外にも、バーチャルチャンネルを管理する rdpwd.sys やディスプレイ

      ドライバである rdpdd.dll などのカーネル モード モジュールも動作しています。

       

      RDPInit.exe プロセスは RDPShell.exe プロセスの起動や終了、異常終了時の再起動

      などを管理して、常に RDPShell.exe プロセスの動作を監視するプロセスになります。

       

      RDPShell.exe VC (Virtual Channel) RemoteApp クライアントと結び、

      クライアント上で操作された各種イベントをフックして、アプリケーションに

      伝達します。

       

      簡単に説明しますとこのような動作となりますが、ポイントはアプリケーションや

      アプリケーションを管理するプロセスは全て RemoteApp サーバー上で動作している

      ということです。

       

      クライアント上では、mstsc.exe プロセスが動作して、クライアントの操作をサーバーに

      送ったり、サーバーからの画像情報をクライアント上に伝達する役割を担っています。

       

      例えば、アプリケーションが異常終了した、といったときは、RemoteApp サーバー側で

      アプリケーション自体のプロセス、RDPShell.exe プロセス、RDPInit.exe プロセスが

      正しく動作しているかを確認し、異常終了している場合はメモリ ダンプなどから

      調査を行います。

      勿論、クライアント上の mstsc.exe プロセスに異常が発生する可能性もありますので、

      Mstsc.exe が異常終了していないか確認する必要もありますが、mstsc.exe プロセス上では

      アプリケーションの実体を管理していないので、アプリケーションの処理結果を示す

      スタックはメモリ ダンプから見えません。

      いずれにしてもそれぞれのプロセスの役割を正しく理解したうえで、調査を行う必要があります。

       

      具体的な処理状況を確認したい場合は、以前ブログでご紹介しましたプロセスモニター

      というツールで詳細な動作を確認いただけますので、RemoteApp アプリケーションの

      起動動作や、終了動作など、色々と確認しておくと更に理解が深まるかと思います。

       

      ご参考)

      WS2008: Terminal Services RemoteApps

      http://blogs.technet.com/askperf/archive/2008/02/22/ws2008-terminal-services-remoteapps.aspx

       

      WS2008: Terminal Services Architecture

      http://blogs.technet.com/askperf/archive/2008/02/14/ws2008-terminal-services-architecture.aspx

       

      Process Monitor についての Tips

      http://blogs.technet.com/askcorejp/archive/2010/01/29/process-monitor-tips.aspx