CServiceModule::Run

È£Ãâ µÇ °í ÈÄ ¼­ºñ½ºÀÇ ½º·¹µå ID¸¦ ÀúÀå óÀ½ ½ÇÇà ¼­ºñ½º°¡ÀÌ ID »ç¿ë ÇÏ ¿© Win32 API ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© WM_QUIT ¸Þ½ÃÁö¸¦ º¸³¿À¸·Î½á ±× ÀÚü¸¦ ´Ý½À´Ï´Ù PostThreadMessage¡£

´ÙÀ½ Win32 API ÇÔ¼ö¸¦ È£Ãâ ÇÏ´Â ½ÇÇà CoInitializeEx. ±âº»ÀûÀ¸·Î ½ÇÇà ÇÔ¼ö¿¡ COINIT_MULTITHREADED Ç÷¡±×¸¦ Àü´ÞÇÕ´Ï´Ù. ÀÌ Ç÷¡±×´Â ÇÁ·Î±×·¥ÀÌ ÀÚÀ¯ ½º·¹µå ¼­¹ö¸¦ ³ªÅ¸³À´Ï´Ù.

ÀÌÁ¦ CSecurityDescriptorÀ» »ç¿ë ÇÏ ¿© º¸¾ÈÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Å¬·¡½º´Â Å©°Ô ¼³Á¤ ÇÏ´Â ÀÛ¾÷À» ´Ü¼øÈ­ ÇÏ °í ÀÓÀÇ ¾×¼¼½º Á¦¾î ¸ñ·Ï (DACL) º¯°æ-¾×¼¼½º Á¦¾î Ç׸ñ (Ace) °¢ ACE Win32 °³Ã¼¿¡ ´ë ÇÑ ¾×¼¼½º¸¦ Á¤ÀÇ ¸ñ·Ï¡£

±âº»ÀûÀ¸·Î ATL COM ¸¶¹ý»ç »ý¼º CSecurityDescriptorÀÇ InitializeFromThreadToken ¸â¹ö ÇÔ¼ö¸¦ È£Ãâ ÇÕ´Ï´Ù. ÀÌ ¸ðµç »ç¿ëÀÚ °³Ã¼¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀÇ¹Ì ÇÏ´Â null DACL °³Ã¼ÀÇ º¸¾È ¼³¸íÀÚ¸¦ ÃʱâÈ­¡£

»ç¿ëÀÚ ¾×¼¼½º¸¦ º¯°æ ÇÏ´Â °¡Àå ½¬¿î ¹æ¹ýÀº °ÅºÎ ¿Í CSecurityDescriptorÀÇ Çã¿ë ¸â¹ö ÇÔ¼öÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÇÔ¼ö´Â ±âÁ¸ DACL¿¡ ACE¸¦ Ãß°¡ ÇÕ´Ï´Ù. ±×·¯³ª, Deny Ç×»ó ¿ì¼± ÀÌÈÄ Çã¿ë ³¡¿¡ Ãß°¡ ÇÏ´Â µ¿¾È °ÅºÎ ´Â DACLÀÇ ½ÃÀÛ ºÎºÐ¿¡ ACE¸¦ Ãß°¡ ÇÕ´Ï´Ù. Çã¿ë °ú °ÅºÎ ¸¦ ¸ðµÎ Àü´Þ »ç¿ëÀÚ À̸§À» ù ¹ø° ¸Å°³ º¯¼ö ¹× ¾×¼¼½º ±ÇÇÑ (ÀϹÝÀûÀ¸·Î COM_RIGHTS_EXECUTE)¿Í µÎ ¹ø°¡£

InitializeFromThreadToken ¿¡ ÀÇÇØ ¸¸µé¾îÁø null DACLÀ» ¸ðµç »ç¿ëÀÚ°¡ COM °³Ã¼¿¡ ´ë ÇÑ ¾×¼¼½º ºÎ¿©¸¦ ±â¾ï ÇÕ´Ï´Ù. ±×·¯³ª ÃÖ´ëÇÑ »¡¸® Çã¿ë ACE Ãß°¡¸¦ ÀüÈ­¸¸ ÇÏ´Â »ç¿ëÀÚ°¡ ¾×¼¼½ºÇÒ ÁöÁ¤ ÇÕ´Ï´Ù. ´ÙÀ½ ÄÚµå´Â Çã¿ë ¿¡ ´ë ÇÑ È£ÃâÀ» º¸¿© ÁÝ´Ï´Ù.:

CSecurityDescriptor sd;
sdÀÔ´Ï´Ù.InitializeFromThreadToken ();

°æ¿ì (bAllowOneUser)
{
 nbsp; sdÀÔ´Ï´Ù.("MYDOMAIN\\myuser", COM_RIGHTS_EXECUTE)À» Çã¿ë;
}
CoInitializeSecurity (sd,-1, NULL, NULL,
 ??????????????????? RPC_C_AUTHN_LEVEL_PKT,
 ??????????????????? RPC_C_IMP_LEVEL_IMPERSONATE,
 ??????????????????? NULL, EOAC_NONE, NULL)(&N)

¸¸¾à º¯¼ö, bAllowOneUser , TRUEÀ̸鸸 ÇØ´ç »ç¿ëÀÚÀÇ ACE´Â DACL¿¡ Àֱ⠶§¹®¿¡ ÇϳªÀÇ »ç¿ëÀÚ ÁöÁ¤¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. °æ¿ì bAllowOneUser Àº false·Î, ´ÙÀ½ DACLÀÌ null ¶§¹®¿¡ ¸ðµç »ç¿ëÀÚ°¡ ¾×¼¼½ºÇÒ¡£

¼­ºñ½º´Â ÀÚü º¸¾ÈÀ» ÁöÁ¤ ÇÏÁö ¾ÊÀ» °æ¿ì Á¦°Å Win32 API ÇÔ¼ö¸¦ È£Ãâ CoInitializeSecurity¹× COM ·¹Áö½ºÆ®¸®¿¡¼­ º¸¾È ¼³Á¤À» È®ÀÎ ÇÕ´Ï´Ù. ÀÌ ¹®¼­ÀÇ µÞºÎºÐ¿¡¼­ ¼³¸í ÇÏ´Â DCOMCNFG À¯Æ¿¸®Æ¼¿Í ÇÔ²² ·¹Áö½ºÆ®¸® ¼³Á¤À» ±¸¼º ÇÏ´Â Æí¸®ÇÑ ¹æ¹ýÀÌÀÔ´Ï´Ù.

º¸¾È ÁöÁ¤ µÇ ¸é »õ·Î¿î Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥¿¡ ¿¬°áÇÒ ¼ö ÀÖµµ·Ï COM °³Ã¼ µî·Ï µË´Ï´Ù. ¸¶Áö¸·À¸·Î, ÇÁ·Î±×·¥ ½ÇÇà ÁßÀÎ SCMÀ» ¾Ë·ÁÁÝ´Ï´Ù ±×¸®°í ÇÁ·Î±×·¥ ¸Þ½ÃÁö ·çÇÁ¸¦ ÀÔ·Â ÇÕ´Ï´Ù. ¼­ºñ½º Á¾·á ½Ã Á¾·á ¸Þ½ÃÁö°¡ °Ô½Ã µÉ ¶§±îÁö ÇÁ·Î±×·¥ÀÌ °è¼Ó ½ÇÇà µË´Ï´Ù.

Windows NT º¸¾È¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ À¥ »çÀÌÆ®¸¦ ÂüÁ¶ ÇϽʽÿÀ. MSDN ¹®¼­, "Windows NT º¸¾È ÀÌ·Ð ¹× ¿¬½À."

Index