В своём предыдущем блоге я писал заметку про то, как можно случайно удалить классы WMI – PowerShell - убийца WMI классов? И недавно узнал, как можно восстановить эту функциональность обратно. Сами Win32 классы находятся в библиотеке CIMWIN32.MOF, которая и повреждается при удалении классов. Чтобы вернуть эти классы – достаточно перекомпилировать эту библиотеку:
C:\Windows\System32\wbem\MOFComp CIMWIN32.MOF
PS C:\Windows\System32> gwmi win32_share Name Path Description ---- ---- ----------- ADMIN$ C:\Windows Remote Admin C$ C:\ Default share D$ D:\ Default share IPC$ Remote IPC P$ P:\ Default share print$ C:\Windows\system32\spool\drivers Printer Drivers Work D:\Users\vpodans\Work Z$ Z:\ Default share _Shared Documents D:\Users\_Shared Documents PS C:\Windows\System32> [wmiclass]'win32_share' NameSpace: ROOT\cimv2 Name Methods Properties ---- ------- ---------- Win32_Share {Create, SetShare... {AccessMask, AllowMaximum, Caption, Description...} PS C:\Windows\System32> ([wmiclass]'win32_share').delete() PS C:\Windows\System32> gwmi win32_share Get-WmiObject : Invalid class At line:1 char:5 + gwmi <<<< win32_share + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand PS C:\Windows\System32> cd wbem PS C:\Windows\System32\wbem> MOFComp CIMWIN32.MOF Microsoft (R) MOF Compiler Version 6.0.6000.16386 Copyright (c) Microsoft Corp. 1997-2006. All rights reserved. Parsing MOF file: CIMWIN32.MOF MOF file has been successfully parsed Storing data in the repository... Done! PS C:\Windows\System32\wbem> gwmi win32_share Name Path Description ---- ---- ----------- ADMIN$ C:\Windows Remote Admin C$ C:\ Default share D$ D:\ Default share IPC$ Remote IPC P$ P:\ Default share print$ C:\Windows\system32\spool\drivers Printer Drivers Work D:\Users\vpodans\Work Z$ Z:\ Default share _Shared Documents D:\Users\_Shared Documents PS C:\Windows\System32\wbem>
Вот так я сначала показал, как можно убить класс WMI и восстановить его обратно очень простым способом.
А почему не происходи автоматическое восстановление потерянных классов,ведь в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs содержится %windir%\system32\wbem\cimwin32.mof %windir%\system32\wbem\ncprov.mof %windir%\system32\wbem\wmipcima.mof и т.д
А разве они должны сами восстанавливаться?
Судя по этой ссылки должны: http://msdn.microsoft.com/en-us/library/aa392749(VS.85).aspx
я не знаю, что они хотели этим сказать, но autorecovery не работает. Как-то так.
Comments: