|
Windows NT°²È«ÐÔÀíÂÛÓëʵ¼ù ¡¡ ¡¡¡¡±¾ÎÄÊÇÊÇһϵÁм¼ÊõÂÛÎĵĵÚһƪ£¬ÃèÊö·â×°Windows NT°²È«ÐÔÓ¦ÓóÌÐò½Ó¿ÚµÄC++Àà²ã´ÎµÄʵÏֺͱà³Ì¡£ÕâһϵÁÐÂÛÎİüÀ¨£º ¡¡¡¡"Windows NT Security in Theory and Practice" (½éÉÜ)"The Guts of Security" (°²È«ÐÔÀà²ã´ÎµÄʵÏÖ)"Security Bits and Pieces" (Ñù°å³ÌÐòµÄ½á¹¹)"A Homegrown RPC Mechanism" (ÃèÊöÑù°å³ÌÐòʹÓõÄÔ¶³ÌͨÐÅ)ÔÚ±¾ÎÄÖУ¬½«»áÔÚÏ൱¸ßµÄˮƽÉ϶԰²È«¼ÓÃܽøÐÐ̽ÌÖ¡£ ¡¡¡¡½éÉܰ²È«ÐÔÔÚ²Ù×÷ϵͳÖÐÓ¦¸ÃÊÇÏ൱ÈÝÒ×ʵÏֵ쬶ÔÂ𣿾ÍÊÇ˵£¬ÎªÈÎÒâ¶ÔÏóÖ¸¶¨Ä³¸ö°²È«¼¶±ðËùÐèÒª×öµÄËùÓй¤×÷Ö»ÊÇÒ»¸ö¼òµ¥µÄº¯Êýµ÷Óã¬ÀýÈçGrantAccessTo»òÕßDenyAccessTo£¬¶ÔÂ𣿠¡¡¡¡²»ÐÒµÄÊÇ£¬Windows NT°²È«ÐÔÓ¦ÓóÌÐò½Ó¿Ú(API)¿´ÆðÀ´²¢²»ÊÇÄÇô¼òµ¥¡£Ëü°üº¬Á˹ý¶àµÄÓ밲ȫÐÔÓйصĺ¯Êý£¬²¢ÇÒ½ö½öΪһ¸öÓû§´ò¿ªÒ»¸ö¶ÔÏóµÄ¹¤×÷¾ÍÒѾ·Ç³£¸´ÔÓÁË¡£ ¡¡¡¡ÒªÕýȷʹÓð²È«ÐÔAPI£¬ÐèÒª°´ÕÕÏÂÃæ¼¸¸ö²ã´ÎÈ¥Àí½â£º ¡¡¡¡µÚÒ»¸ö²ã´ÎÊÇÀí½âÊý¾Ý½á¹¹£º·ÃÎÊ¿ØÖƱí(ACLs)£¬·ÃÎÊ¿ØÖÆÔªËØ(ACEs)£¬°²È«ÐÔÃèÊö·û(SDs)ºÍ°²È«ÐÔIDs (SIDs)¡£ ¡¡¡¡µÚ¶þ¸ö²ã´ÎÊÇÀí½âACLsµÄÓïÒ壨ËäÈ»²»ÐèÒªÀí½âËüÃÇÊÇÈçºÎ¹¤×÷µÄ£©¡£¸ù¾ÝACLs½¨Á¢Ë³ÐòµÄ²»Í¬£¬¶Ôͬһ¸öÓû§µÄ·ÃÎÊ¿ÉÄÜÔÊÐí£¬Ò²¿ÉÄܲ»ÔÊÐí¡£ ¡¡¡¡µÚÈý¸ö²ã´ÎÊÇÀí½â²Ù×÷ϵͳ±¾ÉíÈçºÎʹÓð²È«ÐÔ¡£¿ÉÒÔ½«°²È«ÐÔAPIÀí½â³ÉΪ·þÎñÆ÷Ó¦ÓóÌÐòÌṩÓÃÀ´±£»¤¶ÔÏó²»±»Î´ÊÚȨµÄÓû§·ÃÎʵķþÎñ¼¯ºÏ£¬Í¬ÊÂÎñÈÕÖ¾°ïÖúÉ豸Çý¶¯³ÌÐòºÍÓ¦ÓóÌÐò¼Ç¼´íÎóÒÔ¼°È·ÈÏʼþÌṩ·þÎñµÄ·½·¨Ïàͬ¡£ ¡¡¡¡ÔÚÕâЩ·þÎñÖ»±»µÚÈý·½Ó¦ÓóÌÐòʹÓÃʱ£¬Ï൱ÈÝÒ×Àí½â°²È«ÐÔÊÇÈçºÎ¹¤×÷µÄ¡£È»¶ø£¬Windows NTÊÇÒ»¸ö°²È«µÄ²Ù×÷ϵͳ£¬´ËÍ⣬»ùÓÚWindows NTµÄÍøÂçÒ²·Ç³£ÒÀÀµÓÚ°²È«ÐÔ¡£Òò´Ë£¬°²È«ÐÔ½áºÏµ½ÏµÍ³µÄ·½·¨¾ÍÏԵúÜÄ£ºý¡£ ¡¡¡¡ËÐèÒª°²È«£¿ ¡¡¡¡ÔÚ½øÈëÈκÎϸ½Ú֮ǰ£¬ÏÈÒªÃ÷ȷΪʲô»áÐèÒª°²È«ÐÔ¡£Èç¹û²»ÊÇ´¦ÓÚÏÂÃæµÄÇé¿ö£¬¾Í¸ù±¾²»±ØÎª°²È«ÐÔµ£ÐÄ£º ¡¡¡¡ÕýÔÚдһ¸ö·þÎñÆ÷Ó¦ÓóÌÐò£¬¼´¼¸¸öÓû§¶¼¿ÉÒÔ·ÃÎʵÄÒ»¸öÓ¦ÓóÌÐò£¬¶øÇÒ´Ë·þÎñÆ÷Ó¦ÓóÌÐòÖ»ÏÞÓÚΪÕâЩÓû§µÄÒ»¸ö×Ó¼¯ÌṩÊý¾Ý½á¹¹¡£ ¡¡¡¡×¢ÒâÕâÊÇÒ»¸öÏ൱¹ã·ºµÄ¶¨Òå¡£ÏÂÃæÊÇÂú×ãÌõ¼þµÄ¼¸¸öÀý×Ó³ÌÐò¡£ ¡¡¡¡¶ÔÓÚµ¥»ú£¨Ã»ÓÐÁ¬ÍøµÄ¼ÆËã»ú£©£¬±àдһ¸ö·þÎñ£¬Windows NTÆô¶¯ÒÔºóÒ»Ö±ÔËÐУ¬²¢ÇÒÓжà¸öÓû§Ôڴ˼ÆËã»úÉϵǼ¼°Í˳ö¡£¸Ã·þÎñÌṩµÄÐÅÏ¢Ö»¶ÔÉÙÊýÓû§¿É¼û¡£ÀýÈ磬ÏëÊÕ¼¯Ê¹ÓÃģʽ»òÕߵǼÊý¾Ý£¬¾Í¿ÉÄÜÖ»ÏÞÓÚ¹ÜÀíÔ±·ÃÎʸÃÊý¾Ý¡£ ¡¡¡¡Ðí¶àÌØÈ¨ÏÞÖÆÔÚϵͳ¼¶¡£ÀýÈ磬ϵͳע²á±íÊܱ£»¤£¬Ê¹µÃÖ»ÓоßÓÐÌØÊâÌØÈ¨µÄÓû§Äܹ»ÏòϵͳÖÐÌí¼ÓÉ豸Çý¶¯³ÌÐò¡£ÕâÊÇÓÉÓÚ°²È«ÐÔµÄÔÒò¡£ÀýÈ磬һ¸ö¶ñÒâµÄÓû§Äܹ»ÀûÓÃÉ豸Çý¶¯³ÌÐò¼à¿ØÓû§ÊäÈëµÄÄÜÁ¦ÇÔÈ¡ÆäËüÓû§µÄ¹¤×÷¡£°²È«ÐÔÒ²ÓÐÖúÓÚϵͳµÄÎȶ¨¡£ÉèÏëÒ»¸öδ¾ÊÚȨµÄÓû§°²×°ÁËÒ»¸ö´ÖÖÆÀÄÔìµÄÉ豸Çý¶¯³ÌÐò¡£µ±ÆäËüÓû§¹¤×÷ʱ£¬ÕâÑùµÄÇý¶¯³ÌÐò»áÔì³Éϵͳ±ÀÀ£¡£Í¨¹ý½«×¢²áÐÂÉ豸Çý¶¯³ÌÐòµÄȨÀûÏÞÖÆ¸ø¿ÉÐÅÀµµÄÓû§£¬Äܹ»·ÀÖ¹Windows NTµÄ¼ÆËã»úÉϳöÏÖÕâÖÖÇé¿ö¡£ ¡¡¡¡Ðí¶àÔÚÍøÂçÉϹ¤×÷µÃÓëµ¥»úÉÏͬÑùºÃµÄ·þÎñÆ÷³ÌÐòµÃÒæÓÚÓ밲ȫÐÔϵͳµÄijÖÖ¹Ò¹³¡£ÀýÈ磬һ¸öÊý¾Ý¿â·þÎñÆ÷¿ÉÄÜͬʱΪ¼¸¸öÓû§·þÎñ£¬Ä³Ð©Óû§²»ÔÊÐí²é¿´¸ø¶¨Êý¾Ý¿âÖеÄijЩÊý¾Ý¡£¼ÙÉ蹫˾ÄÚµÄÿ¸öÈ˶¼Äܹ»²éѯԱ¹¤Êý¾Ý¿â¡£¹ÜÀíÈËÔ±ÐèÒª·ÃÎÊÔ±¹¤µÄÈ«²¿ÐÅÏ¢£¬¶øÆäËûÈËÔòÓ¦¸ÃÖ»ÄÜ¿´µ½¹¤×÷Í·ÏκͰ칫ÊÒ±àºÅ¡£Èç¹û½«°üº¬¹¤×ʺͽ±½ðÐÅÏ¢µÄ×Ö¶ÎÏÞÖÆÓÚ¹ÜÀíÈËÔ±·ÃÎÊ£¬¾Í¿ÉÒÔÔÊÐí¹«Ë¾ÄÚËùÓеÄÈËʹÓÃͬһ¸öÊý¾Ý¿â£¬¶ø²»»áΣ¼°°²È«ÐԺͻúÃÜ¡£ ¡¡¡¡°²È«ÐÔµÄ΢¹ÛÊÓͼ ¡¡¡¡°²È«ÐÔµÄÒ»¸öÎÊÌâÊÇʹÓð²È«ÐÔAPIºÁÎÞÐÂÆæ´Ì¼¤¿ÉÑÔ¡£ÆäËûÈ˱àдµÄ´úÂë¿ÉÒÔÐýת²èºø¡¢ÔÚ´°¿ÚÖÐÏÔʾ¶¯»¡¢µ¯³öºÜ¿áµÄWindows 95¿Ø¼þ¡¢Í¨¹ýMAPIÀ´»Ø·¢ËÍÊý¾ÝµÈµÈ£¬¶ø°²È«ÐÔ±à³ÌÈ´×ÜÊÇÁîÈËÑá·³µÄÊÂÇé¡£ ¡¡¡¡Windows NT°²È«ÐÔ±íÏֵķdz£¸´ÔÓ£¬Ïà±È֮ϣ¬´Ó΢¹ÛˮƽÉÏ¿´Ôò±È½Ï¼òµ¥¡£Ã¿¸öWindows NTÓò£¨»òÓò×飩±£´æÓÐÒ»¸ö¸ÃÓòËùÖªµÀµÄÓû§µÄÊý¾Ý¿â¡£Óû§ÏëÒªÔÚWindows NTµÄÓòÖй¤×÷£¬±ØÐëÏÈʹÓÃÒ»¸öÓû§ÃûºÍ¿ÚÁîÖ¤Ã÷×Ô¼º¡£Ò»µ©°²È«ÐÔϵͳ֤Ã÷ÁË¿ÚÁÓû§¾Í»á±»¹ØÁªµ½Ò»¸ö·ÃÎÊÁîÅÆ£¬Ê¶±ðÓû§µÄÄÚ²¿Êý¾Ý½á¹¹¡£ ¡¡¡¡¹ØÓÚWindows NTϰ²È«ÐÔ±ØÐëÖªµÀµÄÊ×ÒªÊÂÇéÊÇËüÊÇÒÔÓû§ÎªÖÐÐĵģ»Ò²¾ÍÊÇ˵£¬ÊÔͼ·ÃÎÊÊܱ£»¤¶ÔÏóµÄÿһÐдúÂë¶¼±ØÐëÓëÒ»¸öÌØÊâÓû§¹ØÁª£¬¸ÃÓû§±ØÐëÓÿÚÁîÏò¿Í»§»úÖ¤Ã÷×Ô¼ºµÄÉí·Ý¡£Ã¿´Î°²È«ÐÔ¼ì²é¶¼ÒªÒÀ¿¿Óû§¼ø±ð¡£ÀýÈ磬±àд´úÂë×èÖ¹Microsoft Excel·ÃÎÊÒ»¸ö¶ÔÏóÊDz»¿ÉÄܵġ£¿ÉÒÔ±£»¤Ò»¸ö¶ÔÏó·ÀÖ¹Joe BlowÔËÐÐMicrosoft Excel·ÃÎÊ£¬µ«ÊÇÈç¹ûÔÊÐíCarla Vip·ÃÎʸöÔÏó£¬Ëý¿ÉÒÔʹÓÃMicrosoft Excel»òÕ߯äËüϲ»¶µÄ³ÌÐò·ÃÎÊ£¬Ö»ÒªCarlaʹÓÃÖ»ÓÐ×Ô¼ºÖªµÀµÄ¿ÚÁîÏò¿Í»§»úÖ¤Ã÷×Ô¼ºµÄÉí·Ý¾ÍÐС£ ¡¡¡¡°²È«ÐÔAPIËäÈ»¿´ÆðÀ´ºÜ¸´ÔÓ£¬µ«ÊÇÈ´Ö»Íê³ÉÁ½¼þÊ£º ¡¡¡¡ÉóºË£ºÃ¿´Î¶ÔÌØ¶¨µÄ¶ÔÏóÊÔͼÓÐÌØ¶¨µÄ²Ù×÷ʱÉú³ÉÒ»¸öÈÕÖ¾ÌõÄ¿¡£ ¡¡¡¡ÏÞÖÆ¶ÔÏó·ÃÎÊ£º¿Í»§³ÌÐòµ÷Óõĺ¯Êý£¬¿ÉÄÜ»á³É¹¦£¬Ê§°Ü·µ»Ø´íÎó´úÂë5£¨·ÃÎʱ»¾Ü¾ø£©£¬»òÕßÒòÆäËüÔÒòʧ°Ü£¬È¡¾öÓÚ·þÎñÆ÷ÈçºÎÖ¸¶¨ÌØÈ¨¡£ ¡¡¡¡Óû§¿ÉÄܲ»ÊÇÖ±½Ó¿´µ½´íÎóÐÅÏ¢£¬¶øÊÇÒ»¸ö¶Ô»°¿ò£¬ÉÏÃæÐ´×Å£º¡°ÄãûÓÐÌØÈ¨½«¼¦µ°´ÓÖ½ºÐÖÐÄÃ×ß¡£¡±µ¯³ö´Ë¶Ô»°¿òµÄ³ÌÐòÄÚ²¿¿ÉÄܰüº¬ÏÂÃæµÄ´úÂëÐУº ¡¡¡¡if (!RemoveEggsFromCarton() && GetLastError() == ACCESS_DENIED) ¡¡¡¡AfxMessageBox("You do not have the privilege to remove the eggs from the carton"); ¡¡¡¡°²È«ÐÔ»úÖÆ ¡¡¡¡Windows NTʹÓÃÁ½ÖÖµ¼Ö·ÃÎʳ¢ÊÔʧ°Ü·µ»Ø´íÎó5µÄ»úÖÆ£ºÈ·ÈÏȨÏÞºÍÈ·ÈÏÌØÈ¨¡£È¨ÏÞÊôÓÚ¶ÔÏóÉϵÄÐÐΪ£¬±ÈÈç¹ÒÆðÏß³ÌȨÏÞ»ò¶ÁÎļþȨÏÞ¡£È¨ÏÞ×ÜÊÇÓëÌØ¶¨¶ÔÏóºÍÒÑÖªÓû§Ïà¹ØÁª¡£ÀýÈ磬¶ÁÎļþȨÏÞ±ØÐëÓëÎļþ£¨È¨ÏÞÓ¦ÓÃÔÚ´ËÎļþÉÏ£©ºÍÓлòûÓÐȨÏÞµÄÓû§Ïà¹ØÁª¡£Í¬Ñù£¬¹ÒÆðÏß³ÌȨÏÞ³ý·ÇÓëÌØ¶¨µÄÏ̺߳ÍÓû§¹ØÁª·ñÔòûÓÐÓᣠ¡¡¡¡ÌØÈ¨ÊÇÔ¤Ïȶ¨ÒåºÃµÄÊôÓÚϵͳÉϲÙ×÷µÄȨÏÞ¡£ÀýÈç£¬ÌØÈ¨Óе÷ÊÔ³ÌÐò¡¢±¸·ÝºÍ»Ö¸´´æ´¢É豸ÒÔ¼°×°ÈëÇý¶¯³ÌÐò¡£ÌØÈ¨ÒÔÓû§ÎªÖÐÐÄ£¬¶ø²»ÊǶÔÏó¡£ ¡¡¡¡ÎªÁËʹÁ½ÕßÖ®¼äÇø·ÖµÃ¸üÇå³þ£¬¿ÉÒÔ¿´Ò»ÏÂʵÏÖȨÏÞºÍÌØÈ¨µÄÊý¾Ý½á¹¹£ºÈ¨ÏÞÔÚ½Ð×÷·ÃÎÊ¿ØÖÆ±í£¨ACL£©µÄÊý¾Ý½á¹¹ÖÐÖ¸¶¨¡£ACLͨ³£Óë¶ÔÏóÏà¹Ø¡£Óû§Ó÷ÃÎÊÁîÅÆ±íʾ¡£µ±Óû§ÊÔͼ·ÃÎÊÊܱ£»¤µÄ¶ÔÏóʱ£¬Æä·ÃÎÊÁîÅÆÓë¶ÔÏóµÄACL¼ì²é¡£·ÃÎÊÁîÅÆ°üº¬´ú±íÓû§µÄΨһ±êʶ·û£¨°²È«ÐÔID£¬»òSID£©¡£ACLÖеÄÿ¸öȨÏÞÓëÒ»¸öSIDÏà¹Ø£»ÕâÑù£¬°²È«ÐÔ×Óϵͳ¾ÍÖªµÀÁËÓëÿ¸öÓû§Ïà¹ØµÄȨÏÞ¡£ ¡¡¡¡ÁíÒ»·½Ãæ£¬ÌØÈ¨ÔÚ·ÃÎÊÁîÅÆÖбàÂ룬ËùÒÔûÓÐÏà¹ØÁªµÄ¶ÔÏó¡£ÒªÈ·¶¨Óû§ÊÇ·ñÔÊÐí×öij¸öÓëÌØÈ¨ÓйصIJÙ×÷£¬°²È«ÐÔ×Óϵͳ¼ì²é·ÃÎÊÁîÅÆ¡£ ¡¡¡¡´ËÍ⣬ȨÏÞÐèÒªÐÐΪµÄ˵Ã÷£¨¸ÉʲôµÄȨÏÞ£¿ÀýÈ磬¶ÁÎļþ»òÕß¹ÒÆðỊ̈߳©£¬¶øÌØÈ¨²»ÐèÒª£¨Óû§»òÕßÓÐÌØÈ¨£¬»òÕßûÓУ©¡£ÓëÌØÈ¨ÏàËæµÄ²Ù×÷Òþº¬ÔÚÌØÈ¨±¾ÉíÖС£ ¡¡¡¡ÌØÈ¨ÔÚ·ÃÎÊÁîÅÆÖбàÂëµÄÔÒòÊÇ´ó¶àÊýÌØÈ¨²»¿¼Âǰ²È«ÐÔÐèÇó¡£ÀýÈ磬ÔÊÐí±¸·Ý´æ´¢É豸µÄÓû§±ØÐëÄܹ»ÈƹýÎļþ°²È«ÐÔ¡£ÎªÁËÔÊÐíÓû§·ÃÎʶø¸øÓ²ÅÌÉÏÿ¸öµ¥¶ÀµÄÎļþ¶¼¼ÓÈëÒ»¸öеÄACEÊDz»¿ÉÐеġ£ÕâÑù£¬±¸·Ý´æ´¢É豸µÄ´úÂëÊ×Ïȼì²éÊÔͼ±¸·ÝµÄÓû§ÊÇ·ñÓµÓб¸·ÝÌØÈ¨£»Èç¹ûÓУ¬µ¥¸öÎļþµÄ°²È«ÐԾͱ»ºöÂÔ¡£ ¡¡¡¡Äܹ»Óë·ÃÎÊÁîÅÆÏà¹ØµÄÌØÈ¨¼¯±»Àι̼ÓÃÜ£¬²»Äܱ»Ó¦ÓóÌÐòÕ¹¿ª¡£·þÎñÆ÷³ÌÐòÄܹ»Ê¹ÓÃÌØÊâµÄȨÏÞºÍÆÕͨµÄÓ³ÉäʵÏÖ×Ô¶¨µÄ°²È«ÐÔ¹æÔò¡£ ¡¡¡¡ÓÐÁ½ÖÖÀàÐ͵ÄACL£º×ÔÓɾö¶¨µÄ(DACL)ºÍϵͳµÄ(SACL)¡£DACL¹ÜÖÆ¶ÔÏó·ÃÎÊ£¬SACL¹ÜÖÆÉóºË¡£ ¡¡¡¡¿ØÖÆ·ÃÎÊ ¡¡¡¡ÔÚ´ó¶àÊýÇé¿öÏ£¬´íÎó5ÊÇÓÉWindows NTÌØÓеĽÐ×÷AccessCheckµÄWin32º¯ÊýÄÚ²¿²úÉúµÄ¡£´Ëº¯ÊýµÄÊäÈëÓÐÓû§µÄ·ÃÎÊÁîÅÆ¡¢ÐèÒªµÄÌØÈ¨ºÍACL¡£ACLÖ÷ÒªÊÇСÊý¾Ý½á¹¹£¨½Ð×÷·ÃÎÊ¿ØÖÆÔªËØ£¬»òACE£©µÄÁÐ±í£¬Ã¿¸öÊý¾Ý½á¹¹¶¨ÒåÒ»¸öÓû§»òÒ»×éÓû§¡¢Ò»¸öȨÏÞ¼¯ºÏÒÔ¼°ÔÊÐí»ò¾Ü¾øµÄÐÅÏ¢¡£ÀýÈ磬ACLÖпÉÄÜÓÐÒ»¸öACEд×Å¡°´ÓÖ½ºÐÖÐÄÃ×ß¼¦µ°µÄȨÏÞÃ÷È·µØ¾Ü¾ø¸øÓëÓû§ElephantºÍBozo¡±£¬ºóÃæÒ»¸öACEд×Å¡°´ÓÖ½ºÐÖÐÄÃ×ß¼¦µ°µÄȨÏÞÃ÷È·µØ×¼Óè¸øÓëÓû§Betty CrockerÒÔ¼°CHEFS×éÖÐËùÓÐÓû§¡±¡£ ¡¡¡¡ACLÓë¶ÔÏóÏà¹Ø£¬¿ÉÒÔÔÚ·þÎñÆ÷³ÌÐòÖж¯Ì¬´´½¨¡£ÀýÈ磬Èç¹ûÒ»¸öÎļþ¶ÔÏóÓëÒ»¸öACLÏà¹Ø£¬²»¹ÜºÎʱÓÐÓ¦ÓóÌÐòÊÔͼ´ò¿ª¸ÃÎļþ¶ÔÏó£¬ACL¾Í»á±»²éѯÒÔ¾ö¶¨ÊÇ·ñÔÊÐíÔËÐÐÓ¦ÓóÌÐòµÄÓû§´ò¿ªÎļþ¡£ ¡¡¡¡AccessCheckº¯Êý±»Ðí¶àϵͳº¯ÊýÄÚ²¿µ÷Óã¬ÀýÈ磬CreateFile£¨Óû§ÊÔͼÔÚNTFS·ÖÇø»òÃüÃû¹ÜµÀÉÏ´ò¿ªÎļþʱ£©ºÍOpenFileMapping¡£È»¶ø£¬Win32·þÎñÆ÷³ÌÐòÄܹ»Ö±½Óµ÷ÓÃAccessCheck£¬±£»¤Ïë±£»¤µÄÈκζÔÏó¡£ ¡¡¡¡×¢ÒⰲȫÐÔAPIº¯ÊýÖ»±»·þÎñÆ÷³ÌÐòµ÷Ó㻿ͻ§²»ÐèÒª»òÖ±½ÓʹÓð²È«ÐÔ¡£¿Í»§Ôø¾¿´µ½µÄWindows NT°²È«ÐÔ¾ÍÊÇ´íÎó5¡£ÕâʹµÃWindows NT°²È«ÐÔ¿ÉÒÔ²»±Ø¿¼Âǿͻ§ÔËÐеÄÈí¼þ¡£ÐèÒªµÄÊÇ·þÎñÆ÷ÔÚÓòµÄ°²È«ÐÔÊý¾Ý¿âÖÐÈ·ÈϿͻ§ÒÔ¼°½«´Ó¿Í»§ÊÕµ½µÄÇëÇó·Òë³É·þÎñÆ÷¶Ëº¯Êýµ÷ÓõÄÄÜÁ¦¡£´Ëº¯Êý»òÕßÒþº¬µ÷ÓÃAccessCheck£¬»òÕ߸ù¾Ý·þÎñÆ÷¶ËAccessCheckµÄÊä³ö·¢ËÍ»ò²»·¢ËÍÆä½á¹û¡£ ¡¡¡¡Windows NT securityÖÐÈÝÒ×»ìÏýµÄ²¿·ÖÊǶÔAccessCheckµÄµ÷ÓÿÉÄÜÊǷdz£Ä£ºýµÄ¡£ÀýÈ磬Windows NT¼à¿ØÉ豸Çý¶¯³ÌÐò°²×°µÄ¹¦ÄÜÊÇÒ»¸ö·Ç³£Ä£ºýµÄ¸ÅÄî¡£µ±ÊÔͼÌí¼ÓÉ豸Çý¶¯³ÌÐòʱÓû§Òª·ÃÎÊÄĸö¡°¶ÔÏó¡±£¿ÏµÍ³ÔÚÄÄÀïµ÷ÓÃAccessCheckÒÔ¼°±ØÒªÊ±ÔÚÄÄÀォ´íÎóÐÅÏ¢ÏÔʾ¸øÓû§£¿ ¡¡¡¡ÔÚÉ豸Çý¶¯³ÌÐòµÄÀý×ÓÖУ¬´ð°¸»¹²»ÊÇÌ«À§ÄÑ£ºÒòΪÉ豸Çý¶¯³ÌÐòºÍϵͳͨ¹ý×¢²á±í£¨Windows NTͨ¹ýä¯ÀÀ×¢²á±í×ÓÊ÷£¬½âÊÍÿ¸öÌõÄ¿£¬³¢ÊÔÖ´ÐÐÔÚµ¥¶À×¢²á±íÏîÖÐÖ¸¶¨µÄÇý¶¯³ÌÐò¶þ½øÖÆÎļþ¶ø×°ÈëÉ豸Çý¶¯³ÌÐò£©½»»¥£¬Windows NT±£»¤µÄ¶ÔÏóÊÇ×¢²á±íÏËüÔÚWindows NTÖÐÊÇ¿ÉÒԵõ½µÄ¶ÔÏó¡£ÔÚWin32 API²ã£¬ÈκβÙ×÷×¢²á±íµÄ³¢ÊÔ½«»á·Òë³É×¢²á±í¹¤×÷µÄº¯Êý£¬ÀýÈçRegOpenKeyÄÚ²¿µ÷ÓÃAccessCheck¡£ ¡¡¡¡³ýÁË×¢²á±í±£»¤Í⣬Çý¶¯³ÌÐò¶þ½øÖÆÎļþÒ²Óа²È«ÐÔÎÊÌâ¡£Ò»¸öÒò·ÃÎÊ×¢²á±í±»¾Ü¾ø¶øÂä¿ÕµÄºÚ¿ÍÈÔÈ»Äܹ»ÓÃÌí¼ÓÁ˶îÍ⹦ÄܵÄÇý¶¯³ÌÐò¸±±¾È¡´úÔÓеÄÇý¶¯³ÌÐòÖ´ÐÐÎļþ¡£ÕâÒ»¹ý³Ì²»ÐèÒª·ÃÎÊ×¢²á±í£¬ËùÒÔWindows NTÈçºÎ·ÀÖ¹ÕâÀàÎÊÌâÄØ£¿Ï൱¼òµ¥£¬Í¨¹ýÒªÇóÇý¶¯³ÌÐò¶þ½øÖÆÎļþ´æ·ÅÔÚNTFS·ÖÇø²¢ÏÞÖÆ¶ÔÆä·ÃÎÊ¡£ÕâÑù£¬È¡´úÇý¶¯³ÌÐò¶þ½øÖÆÎļþµÄÆóͼ£¨ÔÚWin32 API²ãÉϵ÷ÓÃDeleteFile»òCreateFileʱ²»¿É±ÜÃâµØ±»ÖÕÖ¹£©»á±»AccessCheckץס£¬¶ñÒâµÄºÚ¿Í¾Í²»×ßÔËÁË¡£ ¡¡¡¡ÏµÍ³ÌṩµÄÆäËü°²È«ÐÔ¶ÔÏó¿ÉÄÜÄÑÓÚ˵Ã÷¡£ÀýÈ磬ÔõÑù×èÖ¹Óû§·ÃÎʱ»±£»¤µÄÍøÂç¹²Ïí£¿ÔõÑù×èÖ¹´ò¿ªÔ¶³Ì¼ÆËã»úÉϵķþÎñ¿ØÖƹÜÀíÆ÷£¿ÏµÍ³²ãÈçºÎʹWindows NTÎÞи¿É»÷£¿ÈçºÎʹһЩ°²È«ÐÔº¯Êý×Ô¼ºÊ§°Ü·µ»Ø´íÎó5£¬·ÃÎʱ»¾Ü¾ø£¿ÉèÏëÈç¹ûÓ¦ÓóÌÐòÄܹ»×ÔÓɲÙ×÷×Ô¼ºµÄ·ÃÎÊÁîÅÆ»òµ÷Óð²È«ÐÔº¯Êý¸Ä±ä¶ÔÏóµÄÌØÈ¨½«»á³öÏÖʲôÇé¿ö£¿ÕâÖÖÇé¿öÏ£¬½ö½öÐÞ¸ÄACLºÍÁîÅÆÖеÄÏîÄ¿¾ÍÄܹ»¼òµ¥µÄÈÆ¹ý°²È«ÐÔ¡£¡£ÕâÑù£¬±ØÐëÓÐijÖÖ¡°Ôª°²È«ÐÔ¡±£¬Ò»ÖÖ±£»¤°²È«ÌØÐÔ×Ô¼º²»±»´íÎóÀûÓõĻúÖÆ¡£ÈçºÎʵÏÖ£¿ ¡¡¡¡»ùÓÚAccessCheckµÄ°²È«ÐÔʵÏÖµÄÒ»¸ö½á¹ûÊǰ²È«ÐÔÑÏÖØÒÀÀµÓÚÖ»ÔÊÐíÒÔÖÚËùÖÜÖªµÄÈë¿Úµã·ÃÎʰ²È«ÐÔ¶ÔÏóµÄÌåϵ½á¹¹¡£ÀýÈ磬Windows 3.1¼Ò×å²Ù×÷ϵͳÖеÄÎļþϵͳ°üÀ¨Ðí¶à²»Í¬Èë¿Úµã£ºÖжÏ21h£¨ÓëÎļþϵͳ½»»¥£©£¬ÖжÏ13h£¨Óë´ÅÅÌÉ豸Çý¶¯½»»¥£©£¬ÒÔ¼°¼¸ÖÖÀàÐ͵ÄÌṩ¶ÔÎļþϵͳ·ÃÎʵÄCÔËÐпâºÍWindows APIº¯Êý£¨ÈçOpenFileºÍ_fopen£©¡£´Ó°²È«ÐÔ¹ÛµãÀ´¿´£¬ÔÚOpenFileÄÚ²¿ÊµÏÖÖе÷ÓÃAccessCheckÕâÑùµÄº¯ÊýºÁÎÞÓô¦£¬Ó¦ÓóÌÐò¿ÉÒÔ¼òµ¥µÄµ÷ÓÃ_fopenÈÆ¹ýÎļþ°²È«ÐÔ¡£Ö»Óдò¿ªÎļþ²Ù×÷µÄËùÓв»Í¬µ÷Óö¼·Òë³ÉÒ»¸ö¡°°²È«ÐÔ¡±µ÷ÓòÅÐУ»Èç¹ûÓÐÒ»¸öÖ´Ðа²È«ÐÔ¼ì²é¶øÁíÒ»¸ö²»Ö´ÐУ¬¾Í»áÓа²È«ÐÔÎÊÌâ¡£ ¡¡¡¡16λWindowsϵͳÖÐÕâÖÖ¡°¿ª·ÅÎļþϵͳ¡±½á¹¹¶ÔÌṩÈç¼ÓÃÜÈíÓ²¼þµÄ¹«Ë¾À´ËµÊÇÖ÷ÒªµÄÂé·³¡£ ¡¡¡¡ÔÚ±àд°²È«ÐÔ·þÎñÆ÷³ÌÐòʱ£¬½«³ÌÐòÉè¼ÆµÄÎÞи¿É»÷ÊǾø¶Ô±ØÒªµÄ£»Ò²¾ÍÊÇ˵£¬±ØÐë·ÀÖ¹¿Í»§¿ÉÒÔ·ÃÎʹؼüÊý¾ÝµÄËùÓз½·¨¡£°²È«ÐÔϵͳµÄÌôÕ½Ö®Ò»ÊÇʹ¹Ø¼üÊý¾ÝÎÞи¿É»÷¡£Õâ¿ÉÄÜÊÇÒ»¼þÏ൱¸´ÔӵŤ×÷£¬¾ÍÏóÇ°ÃæµÄÀý×ÓÖУ¬µ¥¶À±£»¤×¢²á±íÈë¿Ú¶ÔÓÚ±£»¤Õû¸ö¼ÆËã»úµÄÉ豸Çý¶¯³ÌÐòÊDz»¹»µÄ¡£ ¡¡¡¡·ÃÎÊȨÏÞÀàÐÍ ¡¡¡¡Ê¹Óð²È«ÐÔAPI£¬ÏµÍ³Äܹ»°ïÖú¹ÜÖÆ¶Ô¼¸ºõÈκÎÖÖÀà¶ÔÏóµÄ·ÃÎÊ¡£µ«¡°·ÃÎÊ¡±µÄº¬ÒåÊÇʲô£¿ÊDz»ÊÇ̸ÂÛÊý¾Ý¿â×Ö¶ÎʱËùʹÓõķÃÎÊÀàÐÍ£¬»¹ÊÇÓë·ÃÎÊÆäËü´°¿ÚµÄÏûϢѻ·ÍêÈ«²»Í¬µÄijÖÖÀàÐÍ£¿ ¡¡¡¡Õâ¾ÍÊÇΪʲô¡°·ÃÎÊ¡±ÔÚ°²È«ÐÔAPIÖÐÊÇÒ»¸öÏ൱ÆÕ±éµÄÊõÓï¡£²»ÊÇÏñ¡°´ò¿ª¡¢¹Ø±Õ¡¢¶ÁÈ¡ºÍдÈë¶ÔÏóµÄȨÏÞ¡±ÕâÖÖÀι̼ÓÃܵķÃÎÊÀàÐÍ£¬Windows NTÖеķÃÎʱ»¶¨ÒåΪÑÚÂëÖÐλµÄ¼¯ºÏ¡£°²È«ÐÔ×Óϵͳ½«Óû§·ÃÎÊÑÚÂëÖеÄλÓë¶ÔÏó·ÃÎÊÑÚÂëÖеÄλ½øÐÐÆ¥Åä¡£ÀýÈ磬ÕâʹµÃÎÒÃÇÄܹ»Éè¼ÆÒ»¸öÔ±¹¤Êý¾Ý¿â£¬¹ÜÀíÔ±¿ÉÒÔ¶Áд¹¤×ʺͽ±½ðµÄÐÅÏ¢£¬¾Àí¿ÉÒÔ¶Áµ«²»ÄÜд£¬ÆäËûÈ˲»ÄܶÁд·ÃÎÊ¡£ ¡¡¡¡ÒÔÏàͬµÄ·½Ê½£¬Ó¦ÓóÌÐòÄܹ»¶¨Òå×Ô¼ºµÄ·ÃÎÊÀàÐÍ¡£ÀýÈ磬Èç¹û³ÌÐòÏë±£»¤Ò»¸ö¿ÉÒÔ¹²Ïí£¨´Ó¼¸¸öÓû§¶¼Äܹ»µ÷Óú¯Êý²Ù×÷ÆÁÄ»É϶ÔÏóµÄÒâÒåÉÏ£©µÄOpenGL¶ÔÏ󣬿ÉÒÔΪOpenGL¶ÔÏóÄܹ»Íê³ÉµÄËùÓвÙ×÷£¨ÈçÐýת¡¢ÀÉì¡¢·´µ¯ºÍÒÆ¶¯£©¶¨ÒåΨһµÄ·ÃÎÊȨÏÞ£¬²¢ÇÒΪÿ¸öÐèÒª¶ÔͼÏó½øÐвÙ×÷µÄÓû§Ö¸¶¨ÕâЩȨÏÞµÄΨһ×Ó¼¯¡£ ¡¡¡¡°²È«ÐÔAPIÄܹ»ÒÔÈý×éȨÏÞ¹¤×÷£º ¡¡¡¡±ê׼ȨÏÞ£¨ÎªÃ¿ÖÖ¶ÔÏóÀàÐÍÌṩÏàͬ²Ù×÷µÄȨÏÞ£©¡£ ¡¡¡¡ÌØÊâȨÏÞ£¨¶Ôÿ¸ö¶ÔÏóÀàÐÍÓÐÌØÊâÒâÒåµÄȨÏÞ¡£Á½ÖÖ²»Í¬ÀàÐ͵ĶÔÏó¿ÉÄÜÓÐÏàͬµÄȨÏÞÑÚÂë룬µ«ÓжÔȨÏÞÒâÒåµÄ²»Í¬·Ò룩¡£ ¡¡¡¡ÆÕͨȨÏÞ£¬¸ÅÂÔµÄռλ·û£¨ÏóGENERIC_READºÍGENERIC_WRITE´ËÀàµÄȨÏÞ£¬¼¸ºõÊÊÓÃÓÚËùÓжÔÏóÀàÐÍ£¬µ«¶Ô²»Í¬¶ÔÏóÀàÐÍÓв»Í¬µÄÒâÒ壩¡£ÆÕͨȨÏÞ±»Ó³ÉäΪ±ê׼ȨÏÞºÍÌØÊâȨÏÞ¡£ÕâÒ»»úÖÆÔÊÐí·þÎñÆ÷²»ÓÃʵ¼Ê¶¨Òå²Ù×÷¾Í¿ÉÒÔ½¨Á¢¡°¶Á¡±ºÍ¡°Ð´¡±µÄ¸ÅÄî¡£·þÎñÆ÷³ÌÐòÄܹ»ÓÃÆÕͨȨÏÞ¹¤×÷£¬²»¹Ü¶ÁдÊǶÔÎļþ»¹ÊǶÔÊý¾Ý¿â¶ÔÏ󣬶ÔÏó×Ô¼ºÄܹ»È·¶¨ÆÕͨȨÏÞÈçºÎ·Òë³ÉÌØÊâȨÏÞ¡£(×ªÔØ×ÔMicrosoftÍøÕ¾Microsoft ¿ª·¢ÕßÍøÂç¼¼Êõ×é ) ×÷ÕߣºRuediger R. Asche
|