ÔÚÍøÉÏÒ²¿´µ½ÁËһЩÌáÉý½ø³ÌÁîÅÆµÄº¯Êýµ«¶¼²»ÔõôºÃÓÃ,×îºóÎÒ»¹ÊÇ´ÓÒ»¸öºÚ¿ÍºóÃųÌÐòµÄÔ´´úÂëÖÐÌáÈ¡³öÁËÒ»¸öºÃµÄÌáÉý½ø³ÌÁîÅÆµÄº¯Êý,²»¸Ò¶ÀÏí,¸ú´ó¼Ò·ÖÏíÏÂ.ÄǸöºóÃÅÕæµÄдµÄºÜºÃ...
HysiaÌáʾÄã:
Õâ¸öº¯ÊýÓÃÔÚ¶Ô¸¶²¡¶¾µÄ³ÌÐòÖÐЧ¹ûºÜºÃ,Ö»ÓÐÌáÉý×ÔÉíȨÏÞ²ÅÄÜKILLµô²¡¶¾½ø³ÌÎÒÔøÐ´Ð´³öÀ´³¢ÊÔ½áÊøWinlogon½ø³Ì,µ¼ÖµĽá¹ûÊÇ,ÎҵĵçÄÔÁ¢¿ÌÀ¶ÆÁºóÖØÆô!
//ÌáÉý½ø³ÌȨÏÞΪDEBUGȨÏÞ
procedure SetPrivilege;
var
OldTokenPrivileges, TokenPrivileges: TTokenPrivileges;
ReturnLength: dword;
hToken: THandle;
Luid: int64;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, 'SeDebugPrivilege', Luid);
TokenPrivileges.Privileges[0].luid := Luid;
TokenPrivileges.PrivilegeCount := 1;
TokenPrivileges.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TokenPrivileges, SizeOf(TTokenPrivileges), OldTokenPrivileges, ReturnLength);
OldTokenPrivileges.Privileges[0].luid := Luid;
OldTokenPrivileges.PrivilegeCount := 1;
OldTokenPrivileges.Privileges[0].Attributes := TokenPrivileges.Privileges[0].Attributes or SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, OldTokenPrivileges, ReturnLength, PTokenPrivileges(nil)^, ReturnLength);
end;
Ó÷¨¾Í²»ÓÃ˵Á˰É,
procedure TForm1.FormCreate(Sender: TObject);
begin SetPrivilege; ...
Ò»¾ä»°¾Í°Ñ³ÌÐòÌáÉýΪDEBUGȨÏÞÁË,È»ºó¾Í¿ÉÒÔËæ±ã½áÊøÆäËû½ø³ÌÁË.
ºÃ¶«Î÷¸ú´ó¼Ò·ÖÏí~!
¡¡¡¡DelphiÓïÑÔ£¬ÎÞÂÛÊÇ´Ó¿ª·¢ËÙ¶È¡¢»¹ÊÇÔËÐÐËÙ¶È¡¢»¹ÊDZàÒëËÙ¶È¡¢»¹ÊDZàÒëÖ®ºóµÄÖ´ÐÐÎļþÌå»ý£¬¶¼ÊÇÊýÒ»Êý¶þµÄ¡£Òò´Ë±»×÷Ϊ¹²ÏíÈí¼þ¡¢¿ª·¢²úÆ·¡¢ÖÆ×÷“ÂÌÉ«Èí¼þ”µÄÊ×Ñ¡¡£µ«ÊÇ£¬ÓÉÓÚÖî¶àÔÒò£¬DelphiÖУ¬ÓÐһЩ¿Ø¼þ£¬´æÔÚһЩbug¡£²»ÂÛ¹ã´ó¼¼ÊõÈËÔ±ÈçºÎ·´Ó¦£¬Delphi¹Ù·½¾ÍÊÇ“ÊÓ¶ø²»¼û”¡£ÓÐÎÊÌ⣬È˼ ......