??xml version="1.0" encoding="utf-8" standalone="yes"?>久久大香香蕉国产,国产69精品久久久久久人妻精品,国产成人久久久精品二区三区http://www.shnenglu.com/twzheng/category/5932.html『站在风口浪紧握住鼠标旋{Q? 人在台北心在?/description>zh-cnMon, 15 Mar 2010 04:03:28 GMTMon, 15 Mar 2010 04:03:28 GMT60求windows xp J体?/title><link>http://www.shnenglu.com/twzheng/articles/109710.html</link><dc:creator>谭文?/dc:creator><author>谭文?/author><pubDate>Sun, 14 Mar 2010 16:05:00 GMT</pubDate><guid>http://www.shnenglu.com/twzheng/articles/109710.html</guid><wfw:comment>http://www.shnenglu.com/twzheng/comments/109710.html</wfw:comment><comments>http://www.shnenglu.com/twzheng/articles/109710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/twzheng/comments/commentRss/109710.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/twzheng/services/trackbacks/109710.html</trackback:ping><description><![CDATA[求windows xp J体版,最好是台湾版的Q要能一步步的手动安?惌双系l?<br><br>找了好几天了Q很多资源都下不?br><br>今天好不Ҏ(gu)下了一个,但是香港版的Q且安装到选择盘符Ӟ键盘所有键都不能用,所以还是无法安?br><br>谢谢各位大哥大姐帮帮忙,弟感激不尽Q?img src ="http://www.shnenglu.com/twzheng/aggbug/109710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/twzheng/" target="_blank">谭文?/a> 2010-03-15 00:05 <a href="http://www.shnenglu.com/twzheng/articles/109710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>托盘~程http://www.shnenglu.com/twzheng/articles/40552.html谭文?/dc:creator>谭文?/author>Sun, 06 Jan 2008 06:58:00 GMThttp://www.shnenglu.com/twzheng/articles/40552.htmlhttp://www.shnenglu.com/twzheng/comments/40552.htmlhttp://www.shnenglu.com/twzheng/articles/40552.html#Feedback0http://www.shnenglu.com/twzheng/comments/commentRss/40552.htmlhttp://www.shnenglu.com/twzheng/services/trackbacks/40552.html托盘~程
摘自 好易教程|?br>
一?nbsp;托盘?br>
所谓的“托盘”Q在Windowspȝ界面中,指的是下面d条右侧,有系l时间等{的标志的那一部分。在E序最化或挂hQ但有不希望占据d栏的时候,可以把E序攑ֈ托盘区。其实,托盘区的~程很简单,下面要阐qC下子喽^_^

二、托盘编E相兛_?br>
其实呢,把程序放到托盘上的本质就是先在托盘区l制一个图标,然后把程序隐藏不见,再对托盘的图标进行消息处理,可以了?br>
l制图标以及定图标所传送消息的函数只有一个,那就是—————?br>
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
    DWORD dwMessage,
    PNOTIFYICONDATA pnid
);
q个函数呢,负责向系l传递消息,以添加、修Ҏ(gu)删除托盘区的图标?br>
她的q回值呢Q是个布?yu)类型的。就是说Q如果返?Q那是成仁啦,?才成功?br>
参数dwMessage 是表C个函数的应用功能是哪一斚wQ是d、删除,q是修改图标。如果是dQ则它的gؓNIM_ADDQ删除则是NIM_DELETEQ而修Ҏ(gu)NIM_MODIFY?br>
参数pnid是具体的和E序在托盘区的图标有关系的结构了。它的定义如下:

typedef struct _NOTIFYICONDATA {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    char szTip[64];
} NOTIFYICONDATA, *PNOTIFYICONDATA;

下面对该结构各个参数进行刨析:

cbSize : l构的长度,?#8220;?#8221;来做单位。一般在E序中,我们?DWORD)sizeof(NOTIFYICONDATA) l它赋倹{?br>
HWnd : 一个句柄,如果Ҏ(gu)盘中的图标进行操作,相应的消息就传给q个句柄所代表的窗口。自然了Q大多数情况下是this->m_hWnd喽?br>
uID : 在工E中定义的图标ID

uFlags : q个成员标志着其他哪些成员的数据是有效的,分别为NIF_ICON, NIF_MESSAGE, NIF_TIPQ分别代表着数据有效的成员是hIcon, uCallbackMessage, szTip。当Ӟ三个值可以用“|”联系C赗下面分别对涉及到的成员q行阐述

hIcon : 要增加,删除或修改的图标句柄。如果只知道个uID, 一般可能会用函数LoadIcon来得到句柄。例如LoadIcon ( AfxGetInstanceHandle() ,MAKEINTRESOURCE (IDR_MAINFRAME) )?br>
uCallbackMessage : q在Ҏ(gu)盘区的操作中Q是比较重要的数据成员。这是个消息标志Q当用鼠标对托盘区相应图标进行操作的时候,׃传递消息给Hwnd所代表的窗口。所以说Q在uFlags中,一般都得标志它有效。这里一般都是自定义的消息?br>
szTip : 鼠标Ud到托盘图标上时的提示文字?br>
三、托盘编E例?br>
有关托盘~程的基知识呢,也就上面q些了。下面呢Q我们就q入具体的实战演l阶D,丑և个托盘编E的例子瞧瞧Q加q解?br>
1?nbsp; 程序最化到系l托盘区的函数toTray()?br>
void CTimeWakeDlg::toTray()

{

NOTIFYICONDATA nid;

nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);

nid.hWnd=this->m_hWnd;

nid.uID=IDR_MAINFRAME;

nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;

nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称

nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));

strcpy(nid.szTip,"计划d提醒");//信息提示条ؓ“计划d提醒”



Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区d图标

ShowWindow(SW_HIDE);//隐藏ȝ?br>
}

q是个很单的函数Q里面首先给NOTIFYICONDATA赋|然后调用shell_NotifyIcon, 头一个参数是NIM_ADDQ表C添加。然后用函数ShowWindow 隐藏ȝ口,q样Q就实现了将E序最化到系l托盘区的Q务了?br>
2?nbsp; E序已经最化到托盘区了,但是呢,Ҏ(gu)盘图标的操作如何q行呢?q就体现了结构NOTIFYICONDATA的成员uCallbackMessage 的作用了。它所提供的作用就是,当用L鼠标点击托盘区的图标的时候(无论是左键还是右键)Q会向hWnd所代表的窗口传送消息,如果是上例,消息的名U就是WM_SHOWTASK。根据VC的消息机Ӟ对自定义消息增加消息响应函数?br>
在头文g?/{{AFX_MSG?/}}AFX_MSG之间声明消息响应函数Q?br>
afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);

然后在CPP文g中添加消息映。在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP 之间加入Q?br>
ON_MESSAGE(WM_SHOWTASK,onShowTask)消息和消息响应函数映射h?br>
然后是在CPP文g中加入函数onShowTask的实CQ?br>
LRESULT CTimeWakeDlg::onShowTask(WPARAM wParam,LPARAM lParam)

//wParam接收的是图标的IDQ而lParam接收的是鼠标的行?br>
{

if(wParam!=IDR_MAINFRAME)

return 1;

switch(lParam)

{

case WM_RBUTTONUP://右键h时弹出快捯单,q里只有一?#8220;关闭”

{

LPPOINT lpoint=new tagPOINT;

::GetCursorPos(lpoint);//得到鼠标位置

CMenu menu;

menu.CreatePopupMenu();//声明一个弹出式菜单

//增加菜单?#8220;关闭”Q点d发送消息WM_DESTROYl主H口Q已

//隐藏Q,程序结束?br>
menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭");

//定弹出式菜单的位置

menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);

//资源回收

HMENU hmenu=menu.Detach();

menu.DestroyMenu();

delete lpoint;

}

break;

case WM_LBUTTONDBLCLK://双击左键的处?br>
{

this->ShowWindow(SW_SHOW);//单的昄ȝ口完事儿

}

break;

}

return 0;

}



完了Q就完了Q没什么可再说的啦?

]]>
Windowsd理器开发原理与实现http://www.shnenglu.com/twzheng/articles/40551.html谭文?/dc:creator>谭文?/author>Sun, 06 Jan 2008 06:52:00 GMThttp://www.shnenglu.com/twzheng/articles/40551.htmlhttp://www.shnenglu.com/twzheng/comments/40551.htmlhttp://www.shnenglu.com/twzheng/articles/40551.html#Feedback0http://www.shnenglu.com/twzheng/comments/commentRss/40551.htmlhttp://www.shnenglu.com/twzheng/services/trackbacks/40551.htmlWindowsd理器开发原理与实现
摘自 好易教程|?br>
  Windows2000/XP内含的Q务管理器QTaskmgrQ相信大安熟?zhn)吧,相比之下XP里的要比2000功能更加强大Q返回的信息也更加的详细Q不q?zhn)是否觉得q有很多希望获得的消息没有包含在里面吗?(zhn)是否觉?Windows的系l管理工L里的东西太分散了吗?下面p我们看看它们的开发原理,q动手实C个真正的d理器。现在我们是调用Win32API来实现这些功能的Q但是大安说MS隐藏了太多的l节Q以后我们将讨论更多关于Windows内核的东东?
  可能大家对Q务管理器里最熟?zhn)的功能要数进E管理了Q常常我们在怀疑中了病?木马的时候都会看看Q务管理器里有没有什么特别的q程在运行,所以进E查看器应该是一个非帔R要的功能。我们除了需要获得进E的名称外,q有什么呢Q当然包括它的进E标识符QProcessIDQ,用户信息QUserNameQ,CPU使用旉QCPUTimeQ和存储器的使用情况QMemoryUsageQ,q有它的优先权(BasePriorityQ。CPU和Memory信息可以帮助我们分析q程的运行情况,而优先权可以表示q程在CPU分配处理器用时的优先情c这些都是通用的进E信息,让我们再看看其他的信息吧。进E的父进E标识符QParent Process IDQ,创徏旉QCreate TimeQ,E序名称{在很多情况下也是我们关心的信息。我们再看看q程相关的性能信息。在Windows下通常有两U模式:内核模式QKernel: Level 0Q和用户模式QUser: Level 3Q,q程往往在两U模式中来回切换Q所以可以获得进E在内核模式和用h式各自的使用旉。同时还包括q程相关的工作集QWorkingSetQ,分页池(PagedPoolQ,非分|QNonePagedPoolQ和面文gQPageFileQ信息。进E相关的I/O操作包括??其他{动作,我们可以获得q些操作的次数和传送数据的数量?br>
  如果(zhn)怀疑某个进E是木马Q那(zhn)还惌得哪些信息呢Q简单的q程名称应该是不够的吧!我们希望获得q程的实际程序的路径Q这样可以帮助我们判断究竟是那个E序在运行。前D|间不是在讨论什么进E隐藏的Q其中一U就?#8220;创徏q程U程”Q而注体往往又是以动态链接库QDLLQ的形式存在的,我们希望看到某个具体进E所包含的所有模块(ModuleQ,常常是DLL也?#8220;U程”是一个大家熟(zhn)的名字Q它是Windowspȝ中的实现体,而进E则是线E运行的环境。一个进E到底创Z多少U程了?我们同样可以枚Dq程内部的所有线E信息。如果?zhn)发现一个木马进E,下面的动作就应该是分析它的运行机Ӟ如果(zhn)对它感兴趣Q,不过最l?zhn)q是要将它结束吧。在Windows2k下,很多pȝ关键q程在TaskMgr里是不能被结束的Q不q现在?zhn)不用担心了。好的,对进E的操作当然包括结束进E。如果?zhn)用过中文的XPQ?zhn)是否常常遇到d?#8220;假死”的情况,虽然(zhn)的?sh)脑没有挂掉Q但却动弹不得,那好我们也同样可以将L的进E挂hQ不?zhn)对它做什么动作(除了l束Q,它都不会有Q何的反应。有了挂赯E,同样我们也可以将q程?#8220;挂v”状态激zR?br>
  桌面H口是大家接触得最多的交互界面了,(zhn)是否想获得每个H口的标题信息呢Q当然我们还可以获得与窗口关联的q程Q线E与H口句柄属性。如果大家对VC比较熟?zhn)Q就应该知道其中的一个SPY++工具吧,它就可以获得桌面H口Q进E和U程的详l信息,不过现在׃用打开q个Q打开那个了,通通搞定了Q?

  pȝ性能是每个用户关心的话题。它包括整个pȝ当前创徏的句柄,q程以及U程的数目。还有物理存储器QPhysical MemoryQ的总量和用情况,pȝ高速缓存(System CacheQ的大小Q存储器保留与提交(Commit ChargeQ状况,当然q有核心分页/非分|QKernel MemoryQ的使用情况。几乎包括了Windowspȝ下存储器理的大部分信息?br>
  虽然现在盘的h(hun)格已l很低了Q不q我q是在用6.4G的小东东Q所以常帔R?#8220;Low Disk”Q我们常常要看看盘的用情况,不过每次都要q入我的?sh)脑Q太ȝ了。而我们现在可以一ơ了解所有磁盘的定w和当前用情况,同时q有它们的格式类型(如FAT,NTFS,CDFS{)和磁盘标{?br>
  说到环境块,或许不是那么熟?zhn)吧,它包含一些环境变量,而每个环境变量对应一?多个字符Ԍ(zhn)可以在控制面板的SYSTEM/AdvancedQ系l?高Q里对它们进行设|,包括d新的环境变量Q删除和~辑pȝ环境变量?br>
  事g记录Ҏ(gu)们分析系l的使用情况有很大的帮助。事件记录分ZU:应用E序Q系l和安全。而对应的每种事g又可以分为几U类型,它们分别是常规信息,警告和错误。其中包括记录序PRecord NumberQ,事gcdQTypeQ,标识W(Event IDQ,来源QSourceQ,产生旉QTime GeneratedQ,用户名(UserQ和相关描述信息QDescriptionQ。有旉大家可以多看看事件信息,当然每个|络理员对它们应该是很熟?zhn)的,不过q包括其他的事g日志信息?br>
  Windowspȝ下的ipconfig /allq个命o我是常常用,因ؓ我们使用的是DHCPQ没事看看自qIP地址变了没有。其中包括详l的|络适配器的信息Q包括适配器名Uͼ描述Q硬件地址和类型,IP地址及相应的子网掩码Q网关与DHCP服务器地址{。不q?zhn)是否对网l流量也感兴呢Q我们当然可以获得主机接?发送了多少Q非Q广播数据报Q出C多少错误Q一共接?发送了多少信息Q这些对每个|友都是有用的信息哟?br>
  |络׃n往往是大家注意的地方Q?zhn)I竟׃n了多信息,它们的文件\径是什么,q有它们的共享类型信息。我们在不需要某些共享资料时Q当然不要忘了将其删除,以免泄露自己的机密信息?br>
  Windows的NT是一个多用户的系l,允许多种cd用户的存在。我们希望获得用戯̎L使用期限QPassword ExpiredQ,C要不定时的修改用L密码哟,以及用户标识W(User IDQ,l标识符QGroup IDQ,q有用户账号的类型(TypeQ,不同的类型有不同的权限,我们当然希望有最High的权力哟Q看看系l对某个账号的磁盘空间用情冉|否有限制QMax StorageQ,账号d的次敎ͼNumber Of LogonQ和d旉信息QLogon HoursQ等Q对我们分析用户的用情况也有帮助的?br>
  pȝ的Win32服务和设备驱动信息也是很重要的,我们希望探测每个服务/讑֤启动E序的具体\径,状态,cdQ启动方式等{信息。我们还希望Ҏ(gu)务进行控Ӟ比如停止Q启动和删除操作?br>
  x也不是那么的单调的,(zhn)可以注销自己的系l,如果(zhn)要d当然需要锁定了。最q大安不喜Ƣ关机,太麻烦了Q所以都习惯使用冬眠Q系l将会ؓ我们保留当前信息Q不q还有支持电(sh)源管理的x和休眠。Windows2000的用h意了Q我们同样可以用XPpȝ下的带有到记时与消息提示的关机和重启功能了?br>
  pȝ的版本信息是比较固定的,主要包括操作pȝ的指U,注册l织/用户Q主机名和系l相关目录等信息?nbsp;  


  说了q么多,我们也该谈谈如何实现了?br>
  1.H口信息

  MS为我们提供了打开特定桌面和枚举桌面窗口的函数?br>  hDesk=OpenDesktopQlpszDesktop,0,FALSE,DESKTOP_ENUMERATEQ;
  //打开我们默认的Default桌面Q?br>  EnumDesktopWindowsQhDesk,QWNDENUMPROCQEnumWindowProc,0Q;
  //枚D打开桌面上的所有窗口,由回调函数实现?br>  BOOL __stdcall EnumWindowProcQHWND, LPARAMQ;
  //在回调函CQ我们可以获得窗口的标题和相兌E,U程信息Q?br>  GetWindowTextQhWnd,szWindowText,dwMaxCountQ;
  GetWindowThreadProcessIdQhWnd,&dwPIDQ;

  2.讑֤驱动器信息(服务和设备驱动器差不多,在此不做重复Q?br>
  讑֤驱动信息有服务控制管理器QSCMQ来理的,我要打开服务控制理器,q枚举所有的讑֤驱动器?br>  OpenSCManagerQNULL,NULL,SC_MANAGER_ALL_ACCESSQ;
  //以所有权限打开服务控制理器;
  EnumServicesStatusQschManager,dwDeviceType,dwDeviceState,
        EnumStatus,dwBufSize,&dwBytesNeeded,
       &dwDevicesReturned,&dwResumeHandleQ)
  //枚D所有设备的当前状态;
  CloseServiceHandleQschManagerQ;
  //CQ在l束讉K后要关闭服务句柄Q?br>  OpenServiceQschManager,szDeviceName,SERVICE_ALL_ACCESSQ;
  //打开特定的设备驱动器Q?br>  QueryServiceConfigQschDevice,lpDeviceConfig,
             1024*8,&dwBytesNeededQ;
  //查询驱动器的服务配置信息Q?br>  QueryServiceStatusQschDevice,&DeviceStatusQ;
  //查询讑֤驱动器的当前状态;
  QueryServiceConfig2QschDevice,SERVICE_CONFIG_DESCRIPTION,
  QLPBYTEQlpDeviceDescription,8*1024,&dwBytesNeededQ?br>  //查询讑֤的描qC息;
  StartServiceQschDevice,0,NULLQ;
  //启动讑֤Q?br>  ControlServiceQschDevice,SERVICE_CONTROL_STOP,&DeviceStatusQ;
  //停止讑֤Q?br>  DeleteServiceQschDeviceQ;
  //删除讑֤Q?br>
  3.盘信息

  我们希望获得pȝ所有磁盘的信息Q包括Y盘,盘Q光盘等{;
  GetLogicalDriveStringsQdwBufferLength,lpBufferQ;
  //获得逻辑讑֤的信息;
  GetVolumeInformationQlpRootPathName,lpVolumeNameBuffer,
   dwVolumeNameSize,&dwVolumeSerialNumber,
   &dwMaximumComponentLength,&dwFileSystemFlags,
      lpFileSystemNameBuffer,dwFileSystemNameSizeQ;
  //获得盘卷信息,包括卷名U和格式cdQ?br>  GetDiskFreeSpaceExQlpRootPathName,&FreeBytesAvailable,
          &TotalNumberOfBytes,&TotalNumberOfFreeBytesQ;
  //探测盘的空间用情况;

  4.环境变量

  我们可以从注册表中获得环境块的信息:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\EnvironmentQ当然要使用注册表的函数?br>  RegOpenKeyExQHKEY_LOCAL_MACHINE,RegKey,0,KEY_QUERY_VALUE,&hKeyQ;
  //打开注册表的键;
  RegEnumValueQhKey,dwIndex,EnvironVariable,
         &dwVariableLength,NULL,NULL,NULL,NULLQ;
  //查询我们需要的信息|
  GetEnvironmentVariableQEnvironVariable,EnvironString,1024Q;
  //获得环境变量的字W串信息Q?br>
  5.事g记录信息

  OpenEventLogQNULL,szLogQ;
  //打开旉日志记录Q?br>  GetOldestEventLogRecordQhEvent,&dwThisRecordQ;
  //获得最新的日志信息Q以便l查找;
  ReadEventLogQhEvent,EVENTLOG_FORWARDS_READ ?EVENTLOG_SEQUENTIAL_READ,
   0,pEventLogRecord,1024*32,&dwRead,&dwNeededQ?br>  //d日志信息Q?br>  LookupAccountSidQNULL,pSid,szName,&dwName,szDomain,&dwDomain,&SNUQ;
  //获取账户的SIDQ以便获得̎L用户名称Q?br>  GetNumberOfEventLogRecordsQhEvent,&dwTotalQ;
  //获得事g日志的LQ?br>  CloseEventLogQhEventQ;
  //不要忘记关闭事g句柄Q?br>  
  6.|络׃n

  我们使用W二{的网l共享搜索;
  NetShareEnumQNULL,dwLevel,QPBYTE *Q?amp;pBuf,MAX_PREFERRED_LENGTH,&entriesread,&totalentries,&resumeQ;
  //列D所有的׃n目录及相关信息;
  NetApiBufferFreeQpBufQ;
  //释放~冲区;
  NetShareDelQNULL,Qchar *QlpShareNameW,0Q;
  //删除|络׃n目录Q?br>  
  7.|络适配器信?br>
  我们要探NIC的信息和|络量Q?br>  GetAdaptersInfoQ?amp;AdapterInfo,&OutBufLenQ;
  //获取适配器信息;
  
  8.pȝ性能

  获取pȝ的存储器使用情况Q?br>  GetPerformanceInfoQ?amp;PerfInfo,sizeofQPERFORMACE_INFORMATIONQ)
  //获取pȝ性能信息Q?


  9.q程/U程/模块信息

  在此我们使用工具帮助函数QToolHelp32Q和pȝ
  OpenProcessTokenQGetCurrentProcessQ),TOKEN_QUERY ?TOKEN_ADJUST_PRIVILEGES,&hTokenQ;
  //打开q程的o牌,提升权限Q?br>  AdjustTokenPrivilegesQhToken,FALSE,&TokenPrivileges,sizeofQTOKEN_PRIVILEGESQ?NULL,NULLQ;
  //进E的权限提升到支持调试(DebugQ;
  CreateToolhelp32SnapshotQTH32CS_SNAPPROCESS,0Q;
  //创徏q程的快照;
  Process32FirstQhProcessSnap,&ProcessEntry32Q;
  Process32FirstQhProcessSnap,&ProcessEntry32Q;
  //枚D所有进E;
  OpenProcessQPROCESS_QUERY_INFORMATION,FALSE,ProcessEntry32.th32ProcessIDQ;
  //打开特定q程Q以查询q程相关信息Q?br>  GetProcessTimesQhProcess,&CreateTime,&ExitTime,&KernelTime,&UserTimeQ;
  //获取q程的时间信息;
  GetProcessMemoryInfoQhProcess,&PMCounter,sizeofQPMCounterQ)Q?br>  //获取q程的存储区信息Q?br>  GetPriorityClassQhProcessQ;
  //获取q程的优先权Q?br>  GetProcessIoCountersQhProcess,&IoCountersQ;
  //获取q程的IO使用情况Q?br>  CreateToolhelp32SnapshotQTH32CS_SNAPMODULE, dwProcessIDQ;
  //创徏模块快照Q?br>  Module32FirstQhModuleSnap, &ModuleEntry32Q;
  Module32NextQhModuleSnap, &ModuleEntry32Q;
  //枚Dq程模块信息Q?br>  CreateToolhelp32SnapshotQTH32CS_SNAPTHREAD, 0Q;
  //创徏U程快照Q?br>  Thread32FirstQhThreadSnap, &ThreadEntry32Q;
  Thread32NextQhThreadSnap, &ThreadEntry32Q;
  //枚DU程信息Q?br>  OpenThreadQTHREAD_ALL_ACCESS,FALSE,ThreadEntry32.th32ThreadIDQ;
  //打开U程Q须自己获得此函数地址Q?br>  TerminateProcessQhProcess,0Q;
  //l止q程Q?br>  SuspendThreadQhThreadQ;
  //(zhn)挂U程Q?br>  ResumeThreadQhThreadQ;
  //ȀzȝE;

  10.x

  AdjustTokenPrivilegesQhToken,FALSE,&TokenPrivileges,sizeofQTOKEN_PRIVILEGESQ?NULL,NULLQ;
  //调整q程令牌Q其支持关机;
  ExitWindowsExQEWX_LOGOFF,0Q;
  //注销pȝQ?br>  LockWorkStationQ)Q?br>  //锁定pȝQ?br>  InitiateSystemShutdownQNULL,szMessage,dwTimeout,FALSE,bSigQ;
  //支持到记时和消息昄的关?重启Q?br>  SetSystemPowerStateQbSig,FALSEQ;
  //pȝ休眠/冬眠Q?


  11.用户信息

  NetUserEnumQNULL,dwLevel,FILTER_NORMAL_ACCOUNT,QLPBYTE*Q?amp;pBuf,       dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandleQ;
  //枚Dpȝ用户信息Q?br>  NetUserDelQNULL,lpUserNameWQ;
  //删除指定用户Q?br>  
  12.pȝ版本信息

  GetVersionExQ(LPOSVERSIONINFOQ?amp;osviexQ;
  //获取操作pȝ的版本信息;
  我们也可以通过注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionQ获取相关信息:
  GetTickCountQ)Q?br>  //获取开机时_
  GetComputerNameQszInfo,&dwInfoQ;
  //获取计算机名Uͼ
  GetUserNameQszInfo,&dwInfoQ;
  //获取计算机用户名Q?br>  GetWindowsDirectoryQszInfo,MAX_PATH+1Q;
  //获取Windows目录Q?br>  GetSystemDirectoryQszInfo,MAX_PATH+1Q;
  //获取pȝ目录Q?br>
  结Q?br>
  虽然我们现在已经实现了Q务管理器的各功能,甚至比Windows自带的功能还要强大,不过却没有什么兴奋的感觉。因为看看我们的代码Q?zhn)׃发现那些都是直接调用的Win32API函数Q但是我们清楚系l底层究竟是怎么实现的吗Q不我们是否只是ؓ了实C个功能,q是Ҏ(gu)作系l感兴趣Q我们都应该更多的对pȝ底层q行研究Q而不仅仅是只会用高层函数的E序员。虽然微软ؓ我们隐藏了很多的内部l节Q但正是q种底层的秘密激发了我们对其q行深入研究的兴和动力?

]]>
þþþþþþ| Ļþи| þҹɫƷAV| ˳˳ۺþþ| þþƷ99þ㽶 | þˬ˸߳AV| ˾Ʒþ| þþþþҹƷ| ޹ƷþõӰŷ| þþƷоƷ| ޹Ʒþþž| ˾Ʒþö| ĻӰӾþþ| þҹɫƷվ| ɫۺϾþ֮ۺϾþ| þùƷþþƷ| ŷһþþƷ| ƷþþþӰԺɫ| ɫۺϾþ֮ۺϾþ| ޹Ʒһþ| þþþav| ݺɫۺϾþȥ| ޾ƷҾþþþþ| ҹҹþݺ| aaþ| vĻþ| þоƷ| ˺ݺۺϾþ޸| 99þþƷһ| 97þۺɫۺɫhd| ٸлþþþ| 97Ʒ˾þô߽| Ʒþþþ龫Ʒ| ձƷþþþĻ8| ɫۺϾþĻ| ޾ƷҹVAþó| Ʒþþþþ벻| һһþaþþƷۺ鶹| þþþƷþþþɫӰ| Ʒ91þþþþþa| պƷھþ|