App Layering

レイヤー整合性メッセージのデバッグ

パッケージマシンをシャットダウンし、[ 完了] の [シャットダウン] を実行すると、 uniservice.exe を呼び出して現在のレイヤ整合性状態を取得します。Finalizeのためにシャットダウンは 、必要なプロセスがまだ保留中かどうかをチェックしています。必要なプロセスがシャットダウンしない場合は、保留中の問題に関するメッセージが表示されます。App Layering は、この情報を次のログファイルに書き込みます。

C:\Program Files\Unidesk\Uniservice\Log\LayerIntegrity.txt C:\Program Files\Unidesk\Uniservice\Log\UniBilcLogs_X.txt

UniBilcLogs どのファイルを使用しているのか正確にはわからないので、最新のタイムスタンプを持つファイルを探してください。「整合性」を検索します。

マシンをシャットダウンしてファイナライズすることで、レイヤーの整合性チェックをバイパスできると考えるかもしれません。しかし、試行すると、App Layering アプライアンスはタスクを停止し、パッケージングマシンに戻ります。[ ファイナライズのシャットダウン ] スクリプトは、レイヤーのファイナライズプロセスを完了する必要があります。

画層の整合性の警告

次のレイヤー整合性メッセージは、レイヤーがファイナライズする準備が整う前にキューに格納された操作を完了する必要があることを伝えます。

  • 「RunOnce スクリプトは未処理です。パッケージングマシンをチェックして再起動してください。」
  • 「インストール後の再起動は保留中です。パッケージングマシンを確認して再起動してください。」
  • ngen マイクロソフトのオペレーションはバックグラウンドで進行中です。「
  • 「MSIのインストール処理が進行中です。パッケージングマシンを確認してください。」
  • 「ブートディスクのドライバを更新するために再起動が保留されています。パッケージングマシンをチェックして再起動してください。」
  • 「Microsoftの ngen 操作が必要です。」
  • 「ソフトウェアセンタークライアントを実行するように構成されていますが、SMSCFG.INI はまだ存在します。」

マシンをシャットダウンしてレイヤー整合性メッセージをバイパスすることはできません。App Layeringソフトウェアが停止し、すべてのプロセスが完了するまでパッケージングマシンに戻ります。

Microsoft NGen の操作が進行中の場合は、次のセクションで説明するように、その操作を迅速に実行することができます。

「RunOnce スクリプトは優れています」

レイヤーを作成するとき、またはレイヤーにバージョンを追加するときに、ユーザーがデスクトップの起動 (または再起動) 後に初めてログインしたときに実行するスクリプトを指定できます。たとえば、Run Once スクリプトを使用して、アプリケーションのセットアップを完了できます。 [ 一度実行] スクリプトは、 .cmd.bat レイヤにインストールされるまたはファイルです。

イメージに対して Run Once スクリプトを実行すると、Windows は通常、再起動時に関連するレジストリキーを削除します。このメッセージは、Windows が、次の場所のいずれかから 1 回だけ実行スクリプトのキーを削除しなかったことを示します。

HKEY_LOCAL_MACHINE\ ソフトウェア\ マイクロソフト\ Windows\ currentVersion\ runOnce HKEY_LOCAL_MACHINE\ ソフトウェア\ WOW6432ノード\ マイクロソフト\ Windows\ CurrentVersion\ runOnce

この問題を解決するには、次の手順に従います。

  • スクリプトファイルが存在しない場合は、レジストリキーを削除します。
  • メッセージで参照されているスクリプトが存在する場合は、スクリプトを手動で実行し、レジストリキーを削除します。

「インストール後の再起動が保留中です」

このメッセージは、次のレジストリキーのいずれかで発生します。

  • HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
  • HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start
  • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME
  • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME
  1. これらのエントリのいずれかが表示された場合は、再起動から始めます。メッセージが、一部のソフトウェアによる実際の再起動要求ではないことを確認するまで、必要に応じて複数回再起動します。

  2. Net Logon に問題がある場合は、を再起動します Unidesk Service for Message Management

  3. 前のリストの最初の 3 つのレジストリキーのいずれかが存在することを確認します。

    • HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
  4. 必要に応じて、これらのキーを手動で変更します。キーが不要な場合は、キーを削除できます。

  5. NetLogon キーの変更を調べて、次のかどうかを確認します。

    • 起動時の値とは異なります。
    • コンピュータ名がアクティブなコンピュータ名とは異なります。

    不一致がある場合は、設定を修正してください。

  6. ドメイン参加操作が再起動を待機しているかどうかを確認します。

    • HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES\NETLOGON\Start
    • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\ACTIVECOMPUTERNAME
    • HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME

    これら 3 つのレジストリキーを変更することはできませんが、 NETLOGON\Start 一部のソフトウェアは再起動のたびにキーを変更できます。

手順 #1 でリストされた最初の 3 つのキーを消去しても、再起動時にプロンプトが表示されるので、レイヤの完全性チェックを無視するように選択できます。ただし、これは最後の手段であり、通常は推奨されません。レイヤーの整合性チェックを無視する方法の詳細については、この記事の最後にある「最後の手段」を参照してください。

「バックグラウンドで Microsoft ngen オペレーションが進行中です」

このメッセージは、 NGEN フォアグラウンド操作またはバックグラウンド操作がまだ進行中であることを示します。NGEN 操作は、 .Net アセンブリがネイティブイメージにコンパイルされる場所です。このメッセージは、プロセスがまだ進行中であることを示します。進行状況を見ることができます。

警告:

プロセスが最初からやり直す可能性があるため、再起動しないでください。

フォアグラウンドでの進行状況を確認するには、を実行します ngen eqi 3。または、 ngen queue status 待機して定期的に実行して、プロセスの進行状況を確認します。バックグラウンドプロセスは、フォアグラウンドでステータスをチェックするたびに一時停止するため、 ngen queue status 実行するとバックグラウンドプロセスが遅くなることに注意してください。

NGEN プロセスを終了させることが重要です。我慢しろよプロセスを終了するか、途中で再起動すると、 .Net 部分的に書かれたアセンブリで終わることができます。

MSCORSVW.EXE ( NETランタイム最適化サービス) などのバックグラウンドプロセスが 1 日以内に完了しない場合は、古いバックグラウンドプロセスを確認します。再起動が役立つ場合があります。

次のサービスの実行が終了したら、続行できます。

  • ngen.exe
  • ngentask.exe
  • mscorsvw.exe

「MSIのインストール処理が進行中です」

このメッセージは、という名前のシステムミューテックス(相互排他オブジェクト) Global\_MSIExecute が存在することを示します。MSI インストーラは Global\_MSIExecute 、を使用して、一度に 1 つのインストーラーのみを実行します。MSI のインストールが行われていないことが確かな場合は、リソースがロックされている可能性があります。レイヤーに戻り、どのプロセスがロックされているかを調べます。

「ブートディスク上のドライバを更新するために再起動が保留されています」

このメッセージは、システムの起動時に開始するように設定されているサービスまたはドライバが変更またはインストールされたことを示します。変更されたドライバが正常に起動できることが重要です。

通常、一度再起動する必要があり、ドライバは正常に動作します。Microsoft Defender や McAfee などのソフトウェアが、起動時に毎回ドライバファイルを変更しようとすることがあり、この整合性チェックが毎回トリガーされます。再起動はクリアされません。以下の「最後の手段」で説明されているように、レイヤーの完全性チェックをバイパスするオプションを使用する必要があります。

NGen マイクロソフトのオペレーションが必要」

このメッセージは、アプリケーションがパッケージングマシンにインストールされ、アイテムの更新が優先度レベル 3でスケジュールされていることを示します。

この優先度レベルでは、CPU がアイドル状態のときにのみ動作が実行され、アクティビティがなくなるまで待機します。

公開イメージ上でアプリケーションを最適な方法で実行するために、App Layering はファイナライズプロセスをブロックします。これは、アプリケーションがデプロイされるすべてのマシンではなく、 NGEN パッケージマシン上でプロセスを実行する必要があるためです。

NGEN eqi 3 (プライオリティレベル 3)を使用すると、次のいずれかを実行できます。

  • 次の両方のディレクトリで、未完了の操作を実行します。

    • c:\windows\microsoft.net\framework\vYY.MM.Build
    • c:\windows\microsoft.net\framework64\v4.0.30319
  • 待機NGEN 操作は通常、アイドル時間の 15 分後に単独で実行されます。

検査される値は次のとおりです。

  • HKLM\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\WorkPending

1 は、処理対象としてキューに入れられた作業項目があることを意味します。

「ソフトウェアセンタークライアントを実行するように構成されていますが、SMSCFG.INI はまだ存在しています…「

このメッセージは、 ccmexec.exeこのマシンがサービスとして構成されており無効に設定されていないことを示します

VDI 環境に正しく展開するには、パッケージングマシン上に作成されたレイヤを適切にシールする必要があることがわかっているため、 が存在しないことを確認していますSMSCFG.ini レイヤーの最後に実行するためのコマンドファイルがあります。レイヤをシールするために使用できるバッチコマンドファイルで実行するコマンドが用意されています。コマンドウィンドウに管理者としてログインし、このスクリプトを実行します。

c:\windows\setup\scripts\SEALSCCMCLIENT.cmd

NGen マイクロソフトのオペレーションの迅速化

NGEN 実行可能ファイルは、Microsoftネイティブイメージジェネレータです。これは、 .NET システムの一部です。 Ngen は、 .NET バイトコードをネイティブイメージに再コンパイルし、レジストリエントリを作成します。Windows は、インストールされる内容と Windows NGEN の構成で検出される内容に基づいて、いつ実行するかを決定します。NGEN が実行されているときは、 常に完了させてくださいNGEN 中断された操作は、 .NET アセンブリが機能しないか、 .NET システム内の他の問題が発生する可能性があります。

NGEN バックグラウンドでプロセスが完了するのを待つか、フォアグラウンドに強制するかを選択できます。次の手順で説明するように、 NGEN 操作のステータスを確認することもできます。ただし、キューのステータスをチェックするたびに、フォアグラウンドアクティビティが作成されるため、バックグラウンド処理が一時的に一時停止することがあります。

NGEN プロセスをフォアグラウンドにすることで、進行状況を表示できます。プロセスが完了したら、レイヤーをファイナライズできます。

  1. NGEN 操作を手前に移動します。通常、 NGEN はバックグラウンド操作であり、フォアグラウンドアクティビティがある場合は一時停止します。タスクをフォアグラウンドに持ち込むと、タスクができるだけ早く完了するのに役立ちます。このためには、以下の手順を実行します:
    1. 管理者としてコマンドプロンプトを開きます。
    2. 現在使用中のバージョンの Microsoft .NET Framework ディレクトリに移動します。

      cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX

    3. NGEN 次のコマンドを入力して、キューに入れられた項目を実行します。 ngen eqi 3 <!--NeedCopy-->
    4. これにより、 NGEN コマンドプロンプトでタスクが最前面に表示され、コンパイルされているアセンブリが一覧表示されます。

      注:

      「コンパイルに失敗しました」というメッセージがいくつか表示される場合は、 MSCORSVW.EXE タスクマネージャでのインスタンスが実行されているかどうかを確認します。その場合は、 NGEN eqi 3完了または再実行を許可します。タスクを停止するために再起動しないでください。タスクは完了する必要があります。

  2. NGEN オペレーションのステータスをチェックする
    1. 管理者としてコマンドプロンプトを開きます。
    2. 次のコマンドを実行して、ステータスを確認します。 NGEN queue status
    3. 次のステータスが表示されたら、 NGEN は完了し、レイヤを確定できます。.NET Runtime Optimization Service は停止し、

レイヤーの整合性の問題を処理するための最後の手段 (推奨しません)

単にファイナライズできないレイヤーがある場合は、レジストリキーを使用して、あるレイヤーがそのレイヤーの整合性チェックを無視するように指示できます。

警告: このキーは最後の手段としてのみ使用してください!App Layering は、このような状況でのファイナライズをブロックします。レイヤーのファイナライズを許可すると、レイヤーとそのレイヤーを含む画像の両方に回復不能な損害を与える可能性があります。まず、Windows内の問題を解決してみてください!

レイヤー上のレイヤーの整合性メッセージを無視するには (お勧めしません):

  1. regedit.exe このキーを実行して作成します。

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Uniservice: "BypassLayerCheck"=DWORD 1<!--NeedCopy-->

    価値は関係ない重要なのは、価値が存在することです。この手順では、レイヤーのレイヤーの整合性チェックをブロックします。これにより、レイヤーやレイヤーを含むレイヤー画像に悪影響を及ぼすことに関係なく、レイヤーをファイナライズできます。