[Áöµð³ÝÄÚ¸®¾Æ]ÀÌÁ¨ ´å³Ý ÇÁ·¹ÀÓ¿öÅ©°¡ »õ·Î¿ï °Íµµ ¾øÁö¸¸ ÇÊÀÚ´Â ¼Ö·ç¼Ç °³¹ß½Ã ´å³ÝÀÇ ÆÄ¿ö¿¡ Áö¼ÓÀûÀ¸·Î ¸¸Á·Çϰí ÀÖ´Ù. ÇÊÀÚÀÇ °ü½ÉÀ» ²ô´Â ±â´É Áß Çϳª´Â WMI(Windows Management Instrumentation) ¼ºñ½ºÀÌ´Ù. ±âº»ÀûÀ¸·Î WMI´Â ÇϺΠ¿î¿µÃ¼Á¦(À©µµ¿ìXPÀ̱ä ÇÏÁö¸¸ À©µµ¿ì 2000 µîµµ °¡´É)¿Í »óÈ£ µ¿ÀÛÇÏ´Â µ¥ ÇÊ¿äÇÑ ¸Å°³Ã¼¸¦ Á¦°øÇÑ´Ù. ¿¹Àü¿£ ±×·± ±â´ÉÀÌ ÇÊ¿äÇϸé, À©µµ¿ì API(Application Programming Interface)·Î ´«À» µ¹¸®´Â ¼ö¹Û¿£ ¾ø¾ú´Ù. ±×·¯´Ï WMI´Â ÃູÀÎ ¼ÀÀÌ´Ù.
WMI´Â °ü¸® ±â´ÉÀ» Á¦°øÇÑ´Ù. À©µµ¿ì XP´Â ¹°·Ð ÀÌÀü À©µµ¿ì ¹öÀü¿¡¼µµ ÀÌ¿ë °¡´ÉÇÏ´Ù. ´Ù¸¸ ÀÌÀü ¹öÀü À©µµ¿ì¿¡¼´Â ±â´ÉÀ» ¸ðµÎ ÀÌ¿ëÇÒ ¼ø ¾øÁö¸¸ ¾î´À Á¤µµ´Â ¾µ ¼ö ÀÖ´Ù. System.Environment.dll ÆÄÀÏÀÌ WMI ±â´ÉÀ» Á¦°øÇϸç, µû¶ó¼ WMI¸¦ »ç¿ëÇÏ·Á¸é ÀÌ ÆÄÀÏÀº ´å³Ý ¾ÖÇø®ÄÉÀ̼ǿ¡ ÂüÁ¶·Î¼ Ãß°¡µÅ¾ß ÇÑ´Ù. ¶ÇÇÑ WMI´Â ÇϺΠȯ°æ°ú µ¿ÀÛÇϱâ À§ÇØ COMÀ» ÀÌ¿ëÇÑ´Ù.
WMI ÇÁ·Î¹ÙÀÌ´õ´Â WMI¸¦ °ÅÃÄ ÀÌ¿ëµÇ´Â ³×ÀÌÆ¼ºê À©µµ¿ì API Äڵ带 °¨½Î°í ÀÖ´Ù. ÇÁ·Î¹ÙÀÌ´õ´Â WMI ¿ÀºêÁ§Æ® ¸Å´ÏÀú¿¡ ÀÇÇØ ÀÌ¿ëµÈ´Ù. ÇϺÎÀÇ ³×ÀÌÆ¼ºê API¸¦ ÀÌ¿ëÇÒ Çʿ䰡 ÀÖ´Ù¸é System.Environment ³×ÀÓ½ºÆäÀ̽º¸¦ °ÅÃÄ WMI ¿ÀºêÁ§Æ® ¸Å´ÏÀú¸¦ ÀÌ¿ëÇØ ÀÛ¾÷ÇÑ´Ù.
´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿¡´Â °øÅë ÀÛ¾÷À» ¼öÇàÇÏ´Â µ¥ »ç¿ëµÇ´Â ´Ù¾çÇÑ WMI ÇÁ·Î¹ÙÀÌ´õ°¡ Æ÷ÇԵŠÀÖ´Ù. ÇÁ·Î¹ÙÀÌ´õÀÇ ¿¹¸¦ ¾Æ·¡¿¡ ¸î °¡Áö ³ª¿Çß´Ù.
* ¾×Ƽºê µð·ºÅ丮 ÇÁ·Î¹ÙÀÌ´õ: ¾×Ƽºê µð·ºÅ丮¿¡ Á¢±ÙÀ» Çã¿ëÇÑ´Ù. ÀÌ ÇÁ·Î¹ÙÀÌ´õ´Â À©µµ¿ì 2000ºÎÅÍ Áö¿øµÈ´Ù.
* ¼³Á¤ ÇÁ·Î¹ÙÀÌ´õ: »ç¿ëÀÚµéÀÌ ´å³Ý CLR(Common Language Runtime)À» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿¡ Æ÷ÇԵǾî ÀÖ´Ù.
* µð½ºÅ© ÄõŸ ÇÁ·Î¹ÙÀÌ´õ: µð½ºÅ© ÄõŸ¸¦ Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. XPºÎÅÍ Áö¿øµÈ´Ù.
* À̺¥Æ® ·Î±× ÇÁ·Î¹ÙÀÌ´õ: À̺¥Æ® ·Î±×(Event Log)¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. NT À̻󿡼 Áö¿øµÈ´Ù.
* ¼º´É Ä«¿îÅÍ ÇÁ·Î¹ÙÀÌ´õ: ¼º´É Ä«¿îÅÍ¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. 2000ºÎÅÍ Áö¿øµÈ´Ù.
* ½Ã½ºÅÛ ·¹Áö½ºÆ®¸® ÇÁ·Î¹ÙÀÌ´õ: ·¹Áö½ºÆ®¸®(Registry)¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. NTºÎÅÍ Áö¿øµÈ´Ù.
* Win32 ÇÁ·Î¹ÙÀÌ´õ: ȯ°æ º¯¼ö¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. 2000ºÎÅÍ Áö¿øµÈ´Ù.
Ä¿½ºÅÒ ÇÁ·Î¹ÙÀÌ´õ¸¦ Á¦ÀÛÇÒ ¼öµµ ÀÖ´Ù. À©µµ¿ì MEºÎÅÍ À©µµ¿ì ¿î¿µÃ¼Á¦¿¡ WMI°¡ Æ÷ÇԵǾúÁö¸¸ À©µµ ¹öÀü¿¡ µû¶ó ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·Î¹ÙÀÌ´õ°¡ ´Ù¸£´Ù. MS´Â WMI °ü¸® µµ±¸¸¦ Á¦°øÇϸç ÀÌ µµ±¸¸¦ ÀÌ¿ëÇØ¼ ¾î¶² ÇÁ·Î¹ÙÀÌ´õ¸¦ ¾µ ¼ö ÀÖ´ÂÁö »ìÆìº¼ ¼ö ÀÖ´Ù.
º»°ÝÀûÀÎ WMI ÀÌ¿ëÇϱâ
ÀÌÁ¦ WMI¿¡ °üÇÑ ÀϹÝÀûÀÎ ³»¿ë°ú WMIÀÇ ±â´É¿¡ ´ëÇØ ¾Ë¾ÒÀ¸´Ï, ´å³Ý ÄÚµå·Î WMIÀÇ ÀåÁ¡À» ½ÃÇèÀûÀ¸·Î ÀÌ¿ëÇØ º¸ÀÚ. Àü¿¡ ¾ð±ÞÇßµí ÇÁ·ÎÁ§Æ®¿¡¼ System.Environment.dll¿¡ ´ëÇÑ ÂüÁ¶¸¦ Ãß°¡ÇØ¾ß ÇÑ´Ù.
¶ÇÇÑ ÄÚµå ¾È¿¡ System.Environment ³×ÀÓ½ºÆäÀ̽º¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù. C#¿¡¼´Â UsingÀ», J#¿¡¼´Â import¸¦, VB´å³Ý¿¡¼´Â Imports¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¿©·¯ ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ¿¡ ¾×¼¼½ºÇÏ´Â ÄÚµåÀÇ ¿¹ÀÌ´Ù.
using System;
using System.Management;
namespace Builder {
class WMIExample {
[STAThread]
static void Main(string[] args) {
try {
ManagementObject mo = new
ManagementObject("Win32_ComputerSystem.Name=\"PENTIUM4\"");
Console.WriteLine("Description: " + mo["Description"].ToString());
Console.WriteLine("Model: " + mo["Model"].ToString());
Console.WriteLine("Number of processors: " +
mo["NumberOfProcessors"].ToString());
} catch (ManagementException e) {
Console.WriteLine("Exception encountered: " + e.ToString());
} catch (Exception e) {
Console.WriteLine("Exception encountered: " + e.ToString());
} } } }
VB´å³ÝÀ¸·Î´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.:
Imports System.Management
Module Module1
Sub Main()
Try
Dim mo As ManagementObject
mo = New ManagementObject("Win32_ComputerSystem.Name=""PENTIUM4""")
Console.WriteLine("Description: " + mo("Description").ToString())
Console.WriteLine("Model: " + mo("Model").ToString())
Console.WriteLine("Number of processors: " + mo("NumberOfProcessors").ToString())
Catch e As ManagementException
Console.WriteLine("Management exception encountered: " + e.ToString())
Catch e As Exception
Console.WriteLine("Exception encountered: " + e.ToString())
End Try
End Sub
End Module
Äڵ带 Á» ÀÚ¼¼È÷ »ìÆìº¸ÀÚ. ¿ì¼± ManagementObject Ŭ·¡½ºÀÇ ÀνºÅϽº´Â WMI¿Í µ¿ÀÛÇÏ´Â µ¥ »ç¿ëµÈ´Ù. WMI¸¦ ÅëÇØ ¾×¼¼½º °¡´ÉÇÑ ¾î¶² °´Ã¼¿Íµµ µ¿ÀÛÇϵµ·Ï ManagementObject Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
WMI Ŭ·¡½º(Win32_ComputerSystem.Name="Pentium")´Â ManagementObject °´Ã¼¸¦ ÀνºÅϽºÈÇÏ´Â µ¥ »ç¿ëµÈ´Ù. ´ë»ó ½Ã½ºÅÛ¿¡¼ WMI Ŭ·¡½º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸±â À§ÇØ Àü¿¡ ¾ð±ÞÇÑ WMI °ü¸® µµ±¸(WMI ¿ÀºêÁ§Æ® ºê¶ó¿ìÀú)¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Á¤º¸¸¦ Ãß°¡ÇÏ´Â °Í»Ó ¾Æ´Ï¶ó °ªÀ» ¼öÁ¤ÇÒ ¼öµµ ÀÖ´Ù.
´ÙÀ½¿¡ ³ªÅ¸³½ ¿¹Á¦ Äڵ忡¼´Â ÇÏµå µå¶óÀ̺꿡 ÇÒ´çµÈ À̸§À» º¯°æÇÑ´Ù.:
using System;
using System.Management;
namespace Builder {
class WMIExample {
[STAThread]
static void Main(string[] args) {
try {
ManagementObject mo = new ManagementObject("Win32_LogicalDisk.DeviceID=\"F:\"");
mo.Get();
mo["VolumeName"] = "FDrive";
mo.Put();
} catch (ManagementException e) {
Console.WriteLine("Exception encountered: " + e.ToString());
} catch (Exception e) {
Console.WriteLine("Exception encountered: " + e.ToString());
} } } }
VB´å³ÝÀ¸·Î ÀÛ¼ºÇÏ¸é ´ÙÀ½°ú °°´Ù.
Imports System.Management
Module Module1
Sub Main()
Try
Dim mo As ManagementObject
mo = New ManagementObject("Win32_LogicalDisk.DeviceID=""F:""")
mo.Get()
mo("VolumeName") = "New Volume"
mo.Put()
Catch e As ManagementException
Console.WriteLine("Management exception encountered: " + e.ToString())
Catch e As Exception
Console.WriteLine("Exception encountered: " + e.ToString())
End Try
End Sub
End Module
ÀÌ ¿¹Á¦´Â óÀ½ °Í°ú À¯»çÇÏ´Ù. Â÷ÀÌÁ¡À̶ó¸é µå¶óÀ̺ê À̸§ ÇÁ·ÎÆÛƼ°¡ º¯°æµÆ´Ù´Â °ÍÀÌ´Ù. get ¸Þ¼Òµå´Â º¯°æ Àü¿¡ È£ÃâµÅ¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇØ¾ß È®½ÇÈ÷ WMI ÀνºÅϽº°¡ µå¶óÀ̺êÀÇ ÇöÀç »óÅ·ΠÁ¤È®È÷ ÃʱâȵȴÙ. »õ À̸§ÀÌ ÇÒ´çµÈ ÈÄ ÇϺΠ¿ÀºêÁ§Æ®¸¦ ¾÷µ¥ÀÌÆ®Çϱâ À§ÇØ put ¸Þ¼Òµå°¡ È£ÃâµÈ´Ù. (ÁÖÀÇ: º¯°æ »çÇ×À» È®½ÇÈ÷ ÀúÀåÇϱ⠹ٶõ´Ù.)
WMI´Â ´å³Ý ÇÁ·¹ÀÓ¿öÅ©ÀÇ Áß¿ä Ãø¸éÀÌÁö¸¸ °ÅÀÇ ÁÖ¸ñÀ» ¹ÞÁö ¸øÇϰí ÀÖ´Ù. WMI´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ µ¿ÀÛÇÏ´Â ´Ù¾çÇÑ Ãø¸éÀÇ È¯°æ°ú »óÈ£ µ¿ÀÛÇϰí ÀÌ È¯°æ¿¡ Á¶ÀÛÀ» °¡ÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ À̺¥Æ®¸¦ ÅëÇØ ½Ã½ºÅÛÀÇ º¯È °°Àº °ÍÀ» ¸ð´ÏÅ͸µÇÏ´Â °ÍÀÌ °¡´ÉÇÒ ¼öµµ ÀÖ´Ù.@