Windows Update の再起動前に Windows の動作がおかしくなる原理について

プログラムを書いてる人にはあるあるの現象ですが

手抜きOS Windows 10 Part107 / 突然ファイル共有が使えなくなったら

なぜこんなことがあるのか、元凶として考えられる最有力の候補について解説します

[Version]
Signature = "$Windows NT$"
NtServicePackVersion = 0
NtServicePackVersionText = "KB2918614"
NtServicePackVersionFullText = "Aggiornamento della protezione per Windows Server 2003 (KB2918614)"
NtServicePackPreviousVersion = 512
NtServicePackPreviousVersionText = "Nessun KB2918614"
IEVersion = "0.0.0.0"
DisplayTitle = "KB2918614"
SP_TITLE = "Aggiornamento della protezione per Windows Server 2003 (KB2918614)"
RebootRequired  = 0
[SourceDisksNames]
1 = "Windows NT Service Pack Uninstall Directory"
[SourceDisksFiles]
crypt32.dll  = 1
msi.dll      = 1
msihnd.dll   = 1
crypt32.dll  = 1
msi.dll      = 1
msihnd.dll   = 1
[DestinationDirs]
"ProductCatalogsToInstall.delete.files" = 0, "ProductCatalogsToInstall"
"SystemRoot\system32.restore.files" = 10, "system32"
"SystemRoot\system32.restore.files.nodelay" = 10, "system32"
"SystemRoot\system32\dllcache.restore.files" = 10, "system32\dllcache"
[RestoreFiles]
CopyFiles = "SystemRoot\system32.restore.files"
CopyFiles = "SystemRoot\system32\dllcache.restore.files"
DelFiles  = "ProductCatalogsToInstall.delete.files"
[RestoreFiles.NoDelay]
CopyFiles = "SystemRoot\system32.restore.files.nodelay"
[ProductCatalogsToInstall.delete.files]
kb2918614.cat
[SystemRoot\system32.restore.files]
crypt32.dll,,,8
[SystemRoot\system32.restore.files.nodelay]
msi.dll,,,8
msihnd.dll,,,8
[SystemRoot\system32\dllcache.restore.files]
crypt32.dll
msi.dll
msihnd.dll
[Reg.Restore.Keys]
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI30-Beta1","",reg00001
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI30-Beta2","",reg00002
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI30-RC1","",reg00003
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI30-RC2","",reg00004
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB884016","",reg00005
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI30a-KB884016","",reg00006
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI30-KB884016","",reg00007
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI31-Beta","",reg00008
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MSI31-RC1","",reg00009
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB893803","",reg00010
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB893803v2","",reg00011
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB935695_Beta","",reg00012
HKCR,"CLSID\{000C101C-0000-0000-C000-000000000046}","",reg00013
HKCR,"CLSID\{000C101C-0000-0000-C000-000000000046}\ProgId","",reg00014
HKCR,"IMsiServer","",reg00015
HKCR,"IMsiServer\CLSID","",reg00016
HKCR,"APPID\{000C101C-0000-0000-C000-000000000046}","",reg00017
HKLM,"System\CurrentControlSet\Services\EventLog\Application\MsiInstaller","",reg00018
HKCR,"CLSID\{000C103E-0000-0000-C000-000000000046}","REG_SZ",reg00019
HKCR,"CLSID\{000C103E-0000-0000-C000-000000000046}\InProcServer32","REG_SZ",reg00020
[Reg.Delete.Keys]
HKCR,"TypeLib\{000C1092-0000-0000-C000-000000000046}\1.0\409\FLAGS"
HKCR,"TypeLib\{000C1092-0000-0000-C000-000000000046}\1.0\409\HELPDIR"
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB2918614"
HKLM,"SOFTWARE\Microsoft\Updates\Windows Server 2003\SP3\KB2918614"
[Reg.Restore.Values]
HKLM,"Software\Microsoft\Windows\CurrentVersion\Installer","","InstallerLocation",1,21,\
43,3a,5c,57,49,4e,44,4f,57,53,5c,73,79,73,74,65,6d,33,32,5c,00
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup","","LogLevel",4,4,\
00,00,00,20
HKLM,"SYSTEM\CurrentControlSet\Services\EventLog\System\Clussvc","","EventMessageFile",2,70,\
3b,25,73,79,73,74,65,6d,72,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,5c,\
77,73,30,33,72,65,73,2e,64,6c,6c,3b,25,73,79,73,74,65,6d,72,6f,6f,74,\
25,5c,73,79,73,74,65,6d,33,32,5c,77,30,33,61,32,34,30,39,2e,64,6c,6c,\
00
[ProcessesToRunBeforeUninstall]
"%systemroot%\system32\spupdsvc.exe /install"
"%windir%\system32\regsvr32.exe /s /u %windir%\system32\msi.dll"
[ProcessesToRunBeforeUninstall.IA]
[ProcessesToRunAfterCopyingUninstall]
[ProcessesToRunAfterCopyingUninstall.IA]
[ProcessesToRunAfterUninstall]
[ProcessesToRunAfterUninstall.IA]
[ProcessesToRunAfterReboot]
[ProcessesToRunAfterReboot.IA]
[DeviceClassList]
[ProcessesToRunAfterReboot.RebootNotRequired]
"%windir%\system32\regsvr32.exe /s %windir%\system32\msi.dll"

これは KB2918614 の update.inf なのですが、赤字の部分に注目して下さい。

 ProcessesToRunBeforeUninstall と言うのは、アンインストールの前に実行されるバッチ処理をさします。
ここでは、regsvr32 による OLE コントロール/COM オブジェクト ライブラリの解放が行われています。

そのまま、更新インストールが完了して、再登録されれば問題ないはずですが、更に下の部分を注目してみてください。

ProcessesToRunAfterReboot.RebootNotRequired とあります。
ここで、 regsvr32 で再登録されています。
ところが、これは、再起動は必須ではないが、再起動後に実行されるバッチ処理の事です。

要するに、再起動するまで、 特定の OLE コントロール/COM オブジェクト ライブラリ が実行できなくなります。

これが、Windows Update がバックグラウンドで行われた後、再起動するまで まともに動かなくなるメカニズムなのです ((((・ω・))))
困ったことに、こういった更新が行われているアップデートが時々あるのです。

流石、マイクロソフトですね ・ω・!

おすすめ

3件のフィードバック

  1. 通りすがりの人 より:

    あーそれで、OSの動きが妙にカクカクしたりするのか
    アプリの動作にまで影響与えてそうだなぁと

  2. 通りすがり より:

    しかしこれどうするのが正しいんだろうな。
    全部シャットダウンや再起動中にやるってのが一番問題を起こさないのだろうけど・・・

  3. 黒翼猫 より:

    >>2
    電源オプションにWindowsUpdateの黄色い盾のマークを発見したら速やかに再起動するとトラブルをさけられますが。
    Windows Update を適用したせいで発生する問題が起こるかもしれないので、適用された更新プログラム(まだ再起動してないので最終適用されていない)が完全に入る前にインターネットで調べてから問題なければ再起動でいいと思います・ω・

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です