В своём предыдущем блоге я писал заметку про то, как можно случайно удалить классы 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: