Windows7 で WmiPrvSE.exe が tzres.dll に頻繁にアクセスしている（一応解消）

# Windows7 で WmiPrvSE.exe が tzres.dll に頻繁にアクセスしている（一応解消）

結論: 以下をタスクスケジューラに登録して、OS 起動後に WMI を再起動する。
もし試そうという人がいるのなら、下のは適当に設定したので [WmiPrvSE.exe CPU consumption](http://social.technet.microsoft.com/Forums/windowsserver/en-US/0b0d0f2c-3a1b-4959-a557-b44d1612b6bb/wmiprvseexe-cpu-consumption?forum=winserverManagement) を参考にしてください。

```xml
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2014-06-01T12:33:24.5758433</Date>
    <Author>conputername\username</Author>
    <Description>wmiprvse.exe による tzres.dll へのアクセスを停止させるため、WMIサービスを再起動する。</Description>
  </RegistrationInfo>
  <Triggers>
    <BootTrigger>
      <Enabled>true</Enabled>
      <Delay>PT5M</Delay>
    </BootTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>conputername\username</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>net</Command>
      <Arguments>stop "Intel(R) Rapid Storage Technology"</Arguments>
    </Exec>
    <Exec>
      <Command>net</Command>
      <Arguments>stop Winmgmt</Arguments>
    </Exec>
    <Exec>
      <Command>net</Command>
      <Arguments>start Winmgmt</Arguments>
    </Exec>
    <Exec>
      <Command>net</Command>
      <Arguments>start "Intel(R) Rapid Storage Technology"</Arguments>
    </Exec>
  </Actions>
</Task>
```

## 調べたことの記録

なんとなくPCの動きが気になるなと思ったので [Process Monitor](http://technet.microsoft.com/ja-jp/sysinternals/bb896645.aspx) で調べてみたら、WmiPrvSE.exe が tzres.dll に頻繁にアクセスしていた。
PCスペックのおかげか表面化はしていないけれど気持ち悪いので改善策を探してみた。

### [wmiprvse.exe constantly creating tzres.dll - Microsoft Community](http://answers.microsoft.com/en-us/windows/forum/windows_7-performance/wmiprvseexe-constantly-creating-tzresdll/740e2064-a689-4690-8413-97e48f7ca8f2)

対処法の fixit の実行は、ポータブル版をダウンロードして administrator で実行しても、管理者権限で実行しろとエラーが出た。次。

### [Is WMIprvse a real villain? - Windows Management Infrastructure Blog - Site Home - MSDN Blogs](http://blogs.msdn.com/b/wmi/archive/2009/05/27/is-wmiprvse-a-real-villain.aspx)

WMI の動作を調べるために試してみる。
設定後に再起動すると……この件に関するログはよくわからんかった。起動後、大量にログが出ているわけでもないみたい。
元に戻す。

### [WmiPrvSE.exe CPU consumption](http://social.technet.microsoft.com/Forums/windowsserver/en-US/0b0d0f2c-3a1b-4959-a557-b44d1612b6bb/wmiprvseexe-cpu-consumption?forum=winserverManagement)

サービスから Windows Management Instrumentation を再起動すると収まった。
他の方法も書いてあったので試してみる。

#### winmgmt.exe 試行
winmgmt.exe /resetrepository でも収まるとのことだが、以下の用に表示されてエラーになった。モジュールがないというエラーコードらしい。どういうことだ？　   

```
WMI データベースの検証に失敗しました
エラー コード: 0x8007007E
```

/verifyrepository と /salvagerepository も同じ結果。/backup と /restore は実行できて現象が収まったけど、これを起動時に毎回実行するよりは WMI の再起動の方がマシかな。

#### Avira の後に WMI を起動してみる
セキュリティ関係のサービスの前に WMI が動いているのがまずいのでは？　という疑念も抱いている記述があったので、 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Winmgmt\DependsOnService に AntiVirService を追加して Avira の後に起動させてみる。変わらず、Comodo Internet Security もあるけど、そこまではやめ。
元に戻す。

#### 結局
起動時にタスクスケジューラで WMI サービスを再起動する。依存関係はひとまず使っているものだけ。
場合によっては、 sc query winmgmt|findstr /i running などで、依存関係のあるものすべての状態を確認して再起動するように書きなおす。