目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析。我先把原文给大家看看。然后把具体的细节说一下。   

  微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他版本的Windows没有任何影响。这一产生无限循环输出的小程序的代码如下:

  #include
    int main( void )
    { 
    for(;{
        printf( "hung up " );
        print("hung up ";
        }
    return 0;
    }

  如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。

  但愿微软赶快修补这一漏洞。同时提醒大家,此代码只可用于研究,不得用于任何非法勾当。

  如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。   

  以上遍是网上纷纷转载的原文。   

  关于为什么会导致错误,就在看下面的分析吧。   

  是退格

  代码是用退格符把console里的光标退成null,

  然后显示任一字符(除 ),即崩溃.

  但是一般情况是不能退出规定的区域的,

  而如的前一个字符是 则可以退出规定的区域(bug?).

  双击运行时,系统将新建一个console,所以我们的显示在console

  的左上角,我们只需两个就可退出屏幕(第一个吃掉 ).

  原因是win32子系统意外中止导致系统崩溃.smss是windows系统建立的第一个用户进程,他的工作之一是建立csrss和winlogon进程,然后一直等待这两个进程的句柄,如果这两个进程意外中止,

  smss将导致系统崩溃.csrss进程就是专门负责所有win32进程和系统进行通信的进程.所有win32进程的系统调用都会由csrss帮你完成,但是这样做因为需要进程切换所以效率太低.所以在windowsNT从3.51升级到4.0时将许多部分从用户态移入内核态,win32进程的系统调用将直接进行以减少进程切换时间.但是仍有少量系统调用需要csrss进程完成,据我所知createprocess

  是这样的函数,所有console上的显示是这样的函数(还有其他的).

  当我们调用printf(" a")最终将调用WriteFile API.

  WriteFile((HANDLE)7," a",NULL,NULL)等同于

  printf(" a"),7是console标准输入的句柄.

  WriteFile判断句柄类型,如是文件句柄将调用ntdll.dll中的

  NtWriteFile函数.如是console句柄将调用WriteConsoleA函数.

  WriteConsoleA函数将调用ntdll.dll中的csrClientCallServer

  函数通知csrss进程,然后调用NtRequestWaitReplyPort等待结果.

  估计是csrss进程在处理这个请求过程中出错了.   

  几年前侯杰老师分析后我整理出来的。因为没有地方说过,甚至简单的分析都没有,所以我才把他翻出来 :) 细心的人发现csrss出错的细节没有描述,谁有时间就补充一下吧..

  现在不少人倾向于使用Server版的操作系统进行网络服务的架设。不可否认,和Pro版系统相比,Server版的系统的确给个人用户提供了更为强大的网络管理功能。但是,当你查看系统进程时,面对众多进程,你可知Server版操作系统在你的后台启动了哪些服务吗?这些服务安全吗?你是否真的需要这些服务呢?  

  普通用户常用Windows 2000 Server来架设个人服务器,然而在系统运行时自动启动的服务中,有些是系统运行所必需的,有些是可以停用或禁用的。同时,很多服务还存在一些安全隐患,我们必须将这些危险服务关闭。看来,随随便便地享受“服务”也会给我们带来安全隐患。今天就让我们来了解一下个人服务器架设者们需要更改或慎用的十大服务。

  提示:系统为Windows 2000 Pro的用户同样可以通过本文了解自己的系统中的服务。由于该系统是针对家庭个人用户的,它所提供的网络方面的管理工具并不完善,所以,对于想架设个人服务器的普通用户来说,还是应该采用Windows 2000 Server。

  Messenger

  危害种类:信息骚扰

  危害系数:★★★

  这是发送和接收系统管理员或“警报器”服务消息的服务。  

  自微软公司于90年代中期推出32位操作系统以来,该服务就一直是Windows操作系统中不可缺少的一部分。

  现在,很多垃圾邮件发送者都利用这一功能向计算机用户发送垃圾信息,建议大家禁用该服务。

  Remote Registry Service

  危害种类:恶意攻击

  危害系数:★★★★

  该服务允许远程用户通过简单的连接就能修改本地计算机上的注册表设置。

  知道管理员账号和密码的人远程访问注册表是很容易的。打开注册表编辑器,选择“文件”菜单中的“连接网络注册表”选项,在“选择计算机”对话框里的“输入要选择的对象名称”下的输入框中输入对方的IP地址,点击“确定”按钮便会出现一个“输入网络密码”对话框,输入管理员账号和密码,点击“确定”按钮后就可对目标机器的注册表进行修改了。

  现在,不少木马后门程序可以通过此服务来修改目标机器的注册表,强烈建议大家禁用该项服务。

  ClipBook

  危害种类:信息泄露

  危害系数:★★★

  这个服务允许任何已连接的网络中的其他用户查看本机的剪贴板。为了安全,强烈建议大家将该服务设置为手动。ClipBook所支持的ClipBook Viewer程序可以允许剪贴页被远程计算机上的ClipBook浏览,可以使用户能够通过网络连接来剪切和粘贴文本和图形。

  Computer Browser

  危害种类:信息泄露

  危害系数:★★

  这个服务可以将当前机器所使用网络上的计算机列表提供给那些请求得到该列表的程序(很有可能是恶意程序),很多黑客可以通过这个列表得知当前网络中所有在线计算机的标志并展开进一步的攻击。建议一般用户禁用该服务。

  Indexing Service

  危害种类:信息泄露

  危害系数:★★★★★

  Indexing Service是一个搜索引擎。这个索引服务应该算是多数IIS Web服务器上诸多安全弱点的根源。同时,它也是很多蠕虫病毒爆发的罪魁祸首,例如曾流行一时的红色代码就是利用IIS的缓冲区溢出漏洞和索引服务来进行传播的,而著名的蓝色代码和尼姆达则是分别利用IIS服务的IFRAMEExecCommand、Unicode漏洞来进行传播。

  因此,如果你不需要架设Web服务器,请一定要关闭该项服务。

  DNS Client

  危害种类:信息泄露

  危害系数:★★

  该服务是用于查询DNS缓存记录的。可用于对某个已入侵的系统进行DNS查询,可加速DNS查询的速度。攻击者在取得用户的Shell后,可以通过ipconfig/displaydns命令查看用户的缓存内容,获知你所访问过的网站。

  Server   

  危害种类:信息泄露、恶意攻击

  危害系数:★★★★★  

  该服务提供RPC支持以及文件、打印和命名管道共享。Server服务是作为文件系统驱动器来实现的,可以处理I/O请求。如果用户没有提供适当的保护,会暴露系统文件和打印机资源。

  对于Windows 2000系统而言,这是一个高风险服务。Windows 2000中默认共享的存在就是该服务的问题。如果不禁用该服务,每次注销系统或开机后,默认共享就会打开,你的所有重要信息都将暴露出来。同时,由于很多Windows 2000使用者为了使用方便把管理员密码设置为空密码或非常简单的密码组合,这给了黑客可乘之机。

  在此提醒大家,除非你打算在Windows网络上共享文件或打印机,否则就不要运行该服务。

  Workstation

  危害种类:信息泄露

  危害系数:★★★

  该服务以一个文件系统驱动器的形式工作,并且可以允许用户访问位于Windows网络上的资源。该服务应当只在位于某个内部网络中并受到某个防火墙保护的工作站和服务器上运行。在任何可以连接到Internet的服务器上都应该禁用这个服务。需要提醒大家的是一些独立服务器(例如Web服务器)是不应当加入到某个Windows网络中的。

  TCP/IP NetBIOS Helper Service

  危害种类:恶意攻击

  危害系数:★★★★

  在Windows构建的网络中,每一台主机的唯一标志信息是它的NetBIOS名。系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,从而实现信息通讯。在这样的网络内部,利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Internet上,它就和一个后门程序差不多了。它很有可能暴露出当前系统中的NetBIOS安全性弱点,例如大家所熟悉的139端口入侵就是利用了此服务。

  由于NetBIOS是基于局域网的,因此,只需要访问Internet资源的一般用户可以禁用它,除非你的系统处于局域网中。

  Terminal Services

  危害种类:恶意攻击

  危害系数:★★★★★

  该服务提供多会话环境,允许客户端设备访问虚拟的系统桌面会话以及运行在服务器上的基于Windows的程序并打开默认为3389的对外端口,允许外来IP的连接(著名的3389攻击所依靠的服务就是它)。对于这个非常危险的服务,只有“禁用”。

  配置服务的方法:进入“服务”窗口,右键点击要配置的服务,然后点击“属性”。可根据需要在“常规”选项卡中,点击“自动”、“手动”或“已禁用”。

  这么多有安全隐患的服务如果没有被广大的个人服务器爱好者所关注,那么黑客入侵简直是易如反掌,服务器被攻占只是迟早的事。笔者在此提醒大家,不要忽略一切看似微不足道的设置,其实合理运用Windows自身的安全机制,也能很好地提升服务器的安全系数。

   随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式攻击越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁、只让80端口对外开放的WEB服务器也逃不过被黑的命运。难道我们真的无能为力了吗?其实,只要你弄明白了NTFS系统下的权限设置问题,我们可以对crackers们说:NO!

  要打造一台安全的WEB服务器,那么这台服务器就一定要使用NTFS和Windows NT/2000/2003。众所周知,Windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。DOS是个单任务、单用户的操作系统。但是我们能说DOS没有权限吗?不能!当我们打开一台装有DOS操作系统的计算机的时候,我们就拥有了这个操作系统的管理员权限,而且,这个权限无处不在。所以,我们只能说DOS不支持权限的设置,不能说它没有权限。随着人们安全意识的提高,权限设置随着NTFS的发布诞生了。

  Windows NT里,用户被分成许多组,组和组之间都有不同的权限,当然,一个组的用户和用户之间也可以有不同的权限。下面我们来谈谈NT中常见的用户组。

  Administrators,管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。分配给该组的默认权限允许对整个系统进行完全控制。所以,只有受信任的人员才可成为该组的成员。

  Power Users,高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。分配给 Power Users 组的默认权限允许 Power Users 组的成员修改整个计算机的设置。但Power Users 不具有将自己添加到 Administrators 组的权限。在权限设置中,这个组的权限是仅次于Administrators的。

  Users:普通用户组,这个组的用户无法进行有意或无意的改动。因此,用户可以运行经过验证的应用程序,但不可以运行大多数旧版应用程序。Users 组是最安全的组,因为分配给该组的默认权限不允许成员修改操作系统的设置或用户资料。Users 组提供了一个最安全的程序运行环境。在经过 NTFS 格式化的卷上,默认安全设置旨在禁止该组的成员危及操作系统和已安装程序的完整性。用户不能修改系统注册表设置、操作系统文件或程序文件。Users 可以关闭工作站,但不能关闭服务器。Users 可以创建本地组,但只能修改自己创建的本地组。

  Guests:来宾组,按默认值,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多。

  Everyone:顾名思义,所有的用户,这个计算机上的所有用户都属于这个组。

  其实还有一个组也很常见,它拥有和Administrators一样、甚至比其还高的权限,但是这个组不允许任何用户的加入,在察看用户组的时候,它也不会被显示出来,它就是SYSTEM组。系统和系统级的服务正常运行所需要的权限都是靠它赋予的。由于该组只有这一个用户SYSTEM,也许把该组归为用户的行列更为贴切。

  权限是有高低之分的,有高权限的用户可以对低权限的用户进行操作,但除了Administrators之外,其他组的用户不能访问 NTFS 卷上的其他用户资料,除非他们获得了这些用户的授权。而低权限的用户无法对高权限的用户进行任何操作。

  我们平常使用计算机的过程当中不会感觉到有权限在阻挠你去做某件事情,这是因为我们在使用计算机的时候都用的是Administrators中的用户登陆的。这样有利也有弊,利当然是你能去做你想做的任何一件事情而不会遇到权限的限制。弊就是以 Administrators 组成员的身份运行计算机将使系统容易受到特洛伊木马、病毒及其他安全风险的威胁。访问 Internet 站点或打开电子邮件附件的简单行动都可能破坏系统。不熟悉的 Internet 站点或电子邮件附件可能有特洛伊木马代码,这些代码可以下载到系统并被执行。如果以本地计算机的管理员身份登录,特洛伊木马可能使用管理访问权重新格式化您的硬盘,造成不可估量的损失,所以在没有必要的情况下,最好不用Administrators中的用户登陆。

  Administrators中有一个在系统安装时就创建的默认用户—-Administrator,Administrator 帐户具有对服务器的完全控制权限,并可以根据需要向用户指派用户权利和访问控制权限。因此强烈建议将此帐户设置为使用强密码。永远也不可以从 Administrators 组删除 Administrator 帐户,但可以重命名或禁用该帐户。由于大家都知道“管理员”存在于许多版本的 Windows 上,所以重命名或禁用此帐户将使恶意用户尝试并访问该帐户变得更为困难。对于一个好的服务器管理员来说,他们通常都会重命名或禁用此帐户。Guests用户组下,也有一个默认用户—-Guest,但是在默认情况下,它是被禁用的。如果没有特别必要,无须启用此账户。我们可以通过“控制面板”–“管理工具”–“计算机管理”–“用户和用户组”来查看用户组及该组下的用户。

  我们用鼠标右键单击一个NTFS卷或NTFS卷下的一个目录,选择“属性”–“安全”就可以对一个卷,或者一个卷下面的目录进行权限设置,此时我们会看到以下七种权限:完全控制、修改、读取和运行、列出文件夹目录、读取、写入、和特别的权限。“完全控制”就是对此卷或目录拥有不受限制的完全访问。地位就像Administrators在所有组中的地位一样。选中了“完全控制”,下面的五项属性将被自动被选中。“修改”则像Power users,选中了“修改”,下面的四项属性将被自动被选中。下面的任何一项没有被选中时,“修改”条件将不再成立。“读取和运行”就是允许读取和运行在这个卷或目录下的任何文件,“列出文件夹目录”和“读取”是“读取和运行”的必要条件。“列出文件夹目录”是指只能浏览该卷或目录下的子目录,不能读取,也不能运行。“读取”是能够读取该卷或目录下的数据。“写入”就是能往该卷或目录下写入数据。而“特别”则是对以上的六种权限进行了细分。读者可以自行对“特别”进行更深的研究,鄙人在此就不过多赘述了。

  下面我们对一台刚刚安装好操作系统和服务软件的WEB服务器系统和其权限进行全面的刨析。服务器采用Windows 2000 Server版,安装好了SP4及各种补丁。WEB服务软件则是用了Windows 2000自带的IIS 5.0,删除了一切不必要的映射。整个硬盘分为四个NTFS卷,C盘为系统卷,只安装了系统和驱动程序;D盘为软件卷,该服务器上所有安装的软件都在D盘中;E盘是WEB程序卷,网站程序都在该卷下的WWW目录中;F盘是网站数据卷,网站系统调用的所有数据都存放在该卷的WWWDATABASE目录下。这样的分类还算是比较符合一台安全服务器的标准了。

  希望各个新手管理员能合理给你的服务器数据进行分类,这样不光是查找起来方便,更重要的是这样大大的增强了服务器的安全性,因为我们可以根据需要给每个卷或者每个目录都设置不同的权限,一旦发生了网络安全事故,也可以把损失降到最低。当然,也可以把网站的数据分布在不同的服务器上,使之成为一个服务器群,每个服务器都拥有不同的用户名和密码并提供不同的服务,这样做的安全性更高。不过愿意这样做的人都有一个特点—-有钱:)。好了,言归正传,该服务器的数据库为MS-SQL,MS-SQL的服务软件SQL2000安装在d:\\ms-sqlserver2K目录下,给SA账户设置好了足够强度的密码,安装好了SP3补丁。

  为了方便网页制作员对网页进行管理,该网站还开通了FTP服务,FTP服务软件使用的是SERV-U 5.1.0.0,安装在d:\\ftpservice\\serv-u目录下。杀毒软件和防火墙用的分别是Norton Antivirus和BlackICE,路径分别为d:\\nortonAV和d:\\firewall\\blackice,病毒库已经升级到最新,防火墙规则库定义只有80端口和21端口对外开放。网站的内容是采用动网7.0的论坛,网站程序在e:\\www\\bbs下。细心的读者可能已经注意到了,安装这些服务软件的路径我都没有采用默认的路径或者是仅仅更改盘符的默认路径,这也是安全上的需要,因为一个黑客如果通过某些途径进入了你的服务器,但并没有获得管理员权限,他首先做的事情将是查看你开放了哪些服务以及安装了哪些软件,因为他需要通过这些来提升他的权限。  

  一个难以猜解的路径加上好的权限设置将把他阻挡在外。相信经过这样配置的WEB服务器已经足够抵挡大部分学艺不精的黑客了。读者可能又会问了:“这根本没用到权限设置嘛!我把其他都安全工作都做好了,权限设置还有必要吗?”当然有!智者千虑还必有一失呢,就算你现在已经把系统安全做的完美无缺,你也要知道新的安全漏洞总是在被不断的发现。权限将是你的最后一道防线!那我们现在就来对这台没有经过任何权限设置,全部采用Windows默认权限的服务器进行一次模拟攻击,看看其是否真的固若金汤。

  假设服务器外网域名为http://www.webserver.com,用扫描软件对其进行扫描后发现开放WWW和FTP服务,并发现其服务软件使用的是IIS 5.0和Serv-u 5.1,用一些针对他们的溢出工具后发现无效,遂放弃直接远程溢出的想法。打开网站页面,发现使用的是动网的论坛系统,于是在其域名后面加个/upfile.asp,发现有文件上传漏洞,便抓包,把修改过的ASP木马用NC提交,提示上传成功,成功得到WEBSHELL,打开刚刚上传的ASP木马,发现有MS-SQL、Norton Antivirus和BlackICE在运行,判断是防火墙上做了限制,把SQL服务端口屏蔽了。通过ASP木马查看到了Norton Antivirus和BlackICE的PID,又通过ASP木马上传了一个能杀掉进程的文件,运行后杀掉了Norton Antivirus和BlackICE。再扫描,发现1433端口开放了,到此,便有很多种途径获得管理员权限了,可以查看网站目录下的conn.asp得到SQL的用户名密码,再登陆进SQL执行添加用户,提管理员权限。也可以抓SERV-U下的ServUDaemon.ini修改后上传,得到系统管理员权限。还可以传本地溢出SERV-U的工具直接添加用户到Administrators等等。大家可以看到,一旦黑客找到了切入点,在没有权限限制的情况下,黑客将一帆风顺的取得管理员权限。

  那我们现在就来看看Windows 2000的默认权限设置到底是怎样的。对于各个卷的根目录,默认给了Everyone组完全控制权。这意味着任何进入电脑的用户将不受限制的在这些根目录中为所欲为。系统卷下有三个目录比较特殊,系统默认给了他们有限制的权限,这三个目录是Documents and settings、Program files和Winnt。对于Documents and settings,默认的权限是这样分配的:Administrators拥有完全控制权;Everyone拥有读&运,列和读权限;Power users拥有读&运,列和读权限;SYSTEM同Administrators;Users拥有读&运,列和读权限。对于Program files,Administrators拥有完全控制权;Creator owner拥有特殊权限;Power users有完全控制权;SYSTEM同Administrators;Terminal server users拥有完全控制权,Users有读&运,列和读权限。对于Winnt,Administrators拥有完全控制权;Creator owner拥有特殊权限;Power users有完全控制权;SYSTEM同Administrators;Users有读&运,列和读权限。而非系统卷下的所有目录都将继承其父目录的权限,也就是Everyone组完全控制权!

  现在大家知道为什么我们刚刚在测试的时候能一帆风顺的取得管理员权限了吧?权限设置的太低了!一个人在访问网站的时候,将被自动赋予IUSR用户,它是隶属于Guest组的。本来权限不高,但是系统默认给的Everyone组完全控制权却让它“身价倍增”,到最后能得到Administrators了。那么,怎样设置权限给这台WEB服务器才算是安全的呢?大家要牢记一句话:“最少的服务+最小的权限=最大的安全”对于服务,不必要的话一定不要装,要知道服务的运行是SYSTEM级的哦,对于权限,本着够用就好的原则分配就是了。对于WEB服务器,就拿刚刚那台服务器来说,我是这样设置权限的,大家可以参考一下:各个卷的根目录、Documents and settings以及Program files,只给Administrator完全控制权,或者干脆直接把Program files给删除掉;给系统卷的根目录多加一个Everyone的读、写权;给e:\\www目录,也就是网站目录读、写权。

  最后,还要把cmd.exe这个文件给挖出来,只给Administrator完全控制权。经过这样的设置后,再想通过我刚刚的方法入侵这台服务器就是不可能完成的任务了。可能这时候又有读者会问:“为什么要给系统卷的根目录一个Everyone的读、写权?网站中的ASP文件运行不需要运行权限吗?”问的好,有深度。是这样的,系统卷如果不给Everyone的读、写权的话,启动计算机的时候,计算机会报错,而且会提示虚拟内存不足。当然这也有个前提—-虚拟内存是分配在系统盘的,如果把虚拟内存分配在其他卷上,那你就要给那个卷Everyone的读、写权。ASP文件的运行方式是在服务器上执行,只把执行的结果传回最终用户的浏览器,这没错,但ASP文件不是系统意义上的可执行文件,它是由WEB服务的提供者—-IIS来解释执行的,所以它的执行并不需要运行的权限。

  经过上面的讲解以后,你一定对权限有了一个初步了了解了吧?想更深入的了解权限,那么权限的一些特性你就不能不知道了,权限是具有继承性、累加性 、优先性、交叉性的。

  继承性是说下级的目录在没有经过重新设置之前,是拥有上一级目录权限设置的。这里还有一种情况要说明一下,在分区内复制目录或文件的时候,复制过去的目录和文件将拥有它现在所处位置的上一级目录权限设置。但在分区内移动目录或文件的时候,移动过去的目录和文件将拥有它原先的权限设置。

  累加是说如一个组GROUP1中有两个用户USER1、USER2,他们同时对某文件或目录的访问权限分别为“读取”和“写入”,那么组GROUP1对该文件或目录的访问权限就为USER1和USER2的访问权限之和,实际上是取其最大的那个,即“读取”+“写入”=“写入”。 又如一个用户USER1同属于组GROUP1和GROUP2,而GROUP1对某一文件或目录的访问权限为“只读”型的,而GROUP2对这一文件或文件夹的访问权限为“完全控制”型的,则用户USER1对该文件或文件夹的访问权限为两个组权限累加所得,即:“只读”+“完全控制”=“完全控制”。

  优先性,权限的这一特性又包含两种子特性,其一是文件的访问权限优先目录的权限,也就是说文件权限可以越过目录的权限,不顾上一级文件夹的设置。另一特性就是“拒绝”权限优先其它权限,也就是说“拒绝”权限可以越过其它所有其它权限,一旦选择了“拒绝”权限,则其它权限也就不能取任何作用,相当于没有设置。

  交叉性是指当同一文件夹在为某一用户设置了共享权限的同时又为用户设置了该文件夹的访问权限,且所设权限不一致时,它的取舍原则是取两个权限的交集,也即最严格、最小的那种权限。如目录A为用户USER1设置的共享权限为“只读”,同时目录A为用户USER1设置的访问权限为“完全控制”,那用户USER1的最终访问权限为“只读”。

  权限设置的问题我就说到这了,在最后我还想给各位读者提醒一下,权限的设置必须在NTFS分区中才能实现的,FAT32是不支持权限设置的。同时还想给各位管理员们一些建议:

  1.养成良好的习惯,给服务器硬盘分区的时候分类明确些,在不使用服务器的时候将服务器锁定,经常更新各种补丁和升级杀毒软件。

  2.设置足够强度的密码,这是老生常谈了,但总有管理员设置弱密码甚至空密码。

  3.尽量不要把各种软件安装在默认的路径下

  4.在英文水平不是问题的情况下,尽量安装英文版操作系统。

  5.切忌在服务器上乱装软件或不必要的服务。

  6.牢记:没有永远安全的系统,经常更新你的知识。

  虽然很多用户使用Windows都有很长一段时间了,但是很多用户都不知道Windows中存在什么快捷键,包括笔者也是会使用几个比较普遍的快捷键。实际上很多快捷键都是非常有用的,让我们来看看:

  CTRL+A:选中活动窗口的所有内容

  CTRL+C:把选中的东西复制到粘贴板

  CTRL+F:显示“查找和替换”对话框

  CTRL+G:显示定位对话框

  CTRL+N:显示新建对话框

  CTRL+O:显示打开对话框

  CTRL+P:显示打印对话框

  CTRL+S:保存当前文档

  CTRL+V:粘贴

  CTRL+X:剪切

  CTRL+Z:撤销

  CTRL+F4:关闭当前活动窗口

  CTRL+拖放文件:复制拖放的文件

  CTRL+ESC:显示开始菜单

  CTRL+F6:打开活动应用程序的下一个文档窗口

  ALT+ENTER:显示选中对象的属性

  ALT+F4:关闭活动项目或者退出活动的程序

  ALT+空格:打开当前活动窗口的快捷菜单

  ALT+TAB:在打开窗口间切换

  ALT+ESC:以打开的顺序切换窗口

  F1:提供当前窗口或者选中项目的帮助文件

  F2:重命名选中的项目

  F3:搜索文件或文件夹

  F4:显示我的电脑或Windows Explorer中的地址栏

  F5:刷新活动窗口

  F6:在当前窗口中的元素间切换,与TAB键功能一样

  F10:激活当前窗口的菜单栏

  Win:显示或隐藏开始菜单

  Win+BREAK:显示系统属性对话框

  Win+D:显示桌面

  Win+M:最小化所有窗口

  Win+SHIFT+M:恢复最小化窗口

  Win+E:打开我的电脑

  Win+F:搜索文件或文件夹

  CTRL+Win+F:搜索计算机

  Win+F1:显示Windows帮助文件

  Win+L:锁住键盘

  Win+R:打开运行窗口

  Win+U:打开辅助工具管理器

  TAB:在选项间切换

  SHIFT+TAB:在选项间切换,顺序与TAB相反

  CTRL+TAB:在标签间进行切换

  CTRL+SHIFT+TAB:在标签间反向切换

  ALT+带下划线的字母:运行相应的命令或选择相应的选项

  空格键:如果焦点选中复选框,选择或反选复选框

  以下的快捷键用于与Windows资源管理器类型的程序:

  NUM LOCK+星号(*):显示选中文件夹的所有子文件夹

  NUM LOCK+加号(+):显示选中文件夹的内容

  NUM LOCK+减号(—):折叠选中文件夹

本文是我在进行MS-Windows、HP-Unix网络编程的实践过程中总结出来的一些经验,仅供大家参考。本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。

  一、WSAStartup函数

  int WSAStartup(
  WORD wVersionRequested,
  LPWSADATA lpWSAData
  );

  使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本, 其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数 时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的 Socket库中的其它Socket函数了。该函数执行成功后返回0。

  例:假如一个程序要使用2.1版本的Socket,那么程序代码如下

  wVersionRequested = MAKEWORD( 2, 1 );
  err = WSAStartup( wVersionRequested, &wsaData );

  二、WSACleanup函数

  int WSACleanup (void);

  应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。

  三、socket函数

  SOCKET socket(
  int af,
  int type,
  int protocol
  );

  应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议 族,该参数置PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三 个参数指定应用程序所使用的通信协议。该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一 个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接 字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描 述符表但是套接字数据结构都是在操作系统的内核缓冲里。下面是一个创建流套接字的例子:

  struct protoent *ppe;
  ppe=getprotobyname("tcp");
  SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

  四、closesocket函数

  int closesocket(
  SOCKET s
  );

  closesocket函数用来关闭一个描述符为s套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于 操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即 有多少个套接字描述符指向该结构。当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描 述符指向它,因此操作系统就先把s在套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除s在 套接字描述符表中的对应表项,并且把s对应的套接字数据结构的引用次数减1。

  closesocket函数如果执行成功就返回0,否则返回SOCKET_ERROR。

  五、send函数

  int send(
  SOCKET s,
  const char FAR *buf,
  int len,
  int flags
  );

  不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通 常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明 实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度 len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区 的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的 发送缓冲中没有数据,那么send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间大小send就一直等待协议把s的发送缓冲中的数据发 送完,如果len小于剩余空间大小send就仅仅把buf中的数据copy到剩余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的, 而是协议传的,send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里)。如果send函数copy数据成功,就返回实际copy的字节 数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send 函数也返回SOCKET_ERROR。要注意send函数把buf中的数据成功copy到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一 定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。(每一个除 send外的Socket函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该Socket 函数就返回SOCKET_ERROR)

  注意:在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。

六、recv函数

  int recv(
  SOCKET s,
  char FAR *buf,
  int len,
  int flags
  );

  不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一 个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步Socket的recv函数的执 行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么 recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收 缓冲区中没有数据或者协议正在接收数据,那么recv就一直等待,只到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据 copy到buf中(注意协议接收到的数据可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。 recv函数仅仅是copy数据,真正的接收数据是协议来完成的),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回 SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。

  注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。

  七、bind函数

  int bind(
  SOCKET s,
  const struct sockaddr FAR *name,
  int namelen
  );

  当创建了一个Socket以后,套接字数据结构中有一个默认的IP地址和默认的端口号。一个服务程序必须调用bind函数来给其绑定一个IP 地址和一个特定的端口号。客户程序一般不必调用bind函数来为其Socket绑定IP地址和断口号。该函数的第一个参数指定待绑定的Socket描述 符;第二个参数指定一个sockaddr结构,该结构是这样定义的:

  struct sockaddr {
  u_short sa_family;
  char sa_data[14];
  };

  sa_family指定地址族,对于TCP/IP协议族的套接字,给其置AF_INET。当对TCP/IP协议族的套接字进行绑定时,我们通常使用另一个地址结构:

  struct sockaddr_in {
  short sin_family;
  u_short sin_port;
  struct in_addr sin_addr;
  char sin_zero[8];
  };

  其中sin_family置AF_INET;sin_port指明端口号;sin_addr结构体中只有一个唯一的字段s_addr,表示 IP地址,该字段是一个整数,一般用函数inet_addr()把字符串形式的IP地址转换成unsigned long型的整数值后再置给s_addr。有的服务器是多宿主机,至少有两个网卡,那么运行在这样的服务器上的服务程序在为其Socket绑定IP地址时 可以把htonl(INADDR_ANY)置给s_addr,这样做的好处是不论哪个网段上的客户程序都能与该服务程序通信;如果只给运行在多宿主机上的 服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信。我们用0来填充 sin_zero数组,目的是让sockaddr_in结构的大小与sockaddr结构的大小一致。下面是一个bind函数调用的例子:

  struct sockaddr_in saddr;
  saddr.sin_family = AF_INET;
  saddr.sin_port = htons(8888);
  saddr.sin_addr.s_addr = htonl(INADDR_ANY);
  bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));

  八、listen函数

  int listen( SOCKET s, int backlog );

  服务程序可以调用listen函数使其流套接字s处于监听状态。处于监听状态的流套接字s将维护一个客户连接请求队列,该队列最多容纳backlog个客户连接请求。假如该函数执行成功,则返回0;如果执行失败,则返回SOCKET_ERROR。

  九、accept函数

  SOCKET accept(
  SOCKET s,
  struct sockaddr FAR *addr,
  int FAR *addrlen
  );

  服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户 套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字;如果失败就返回 INVALID_SOCKET。该函数的第一个参数指定处于监听状态的流套接字;操作系统利用第二个参数来返回新创建的套接字的地址结构;操作系统利用第 三个参数来返回新创建的套接字的地址结构的长度。下面是一个调用accept的例子:

  struct sockaddr_in ServerSocketAddr;
  int addrlen;
  addrlen=sizeof(ServerSocketAddr);
  ServerSocket=accept(ListenSocket,(struct sockaddr *)&ServerSocketAddr,&addrlen);

  十、connect函数

  int connect(
  SOCKET s,
  const struct sockaddr FAR *name,
  int namelen
  );

  客户程序调用connect函数来使客户Socket s与监听趎ame所指定的计算机的特定端口上的服务Socket进行连接。如果连接成功,connect返回0;如果失败则返回SOCKET_ERROR。下面是一个例子:

  struct sockaddr_in daddr;
  memset((void *)&daddr,0,sizeof(daddr));
  daddr.sin_family=AF_INET;
  daddr.sin_port=htons(8888);
  daddr.sin_addr.s_addr=inet_addr("133.197.22.4");
  connect(ClientSocket,(struct sockaddr *)&daddr,sizeof(daddr));

1. API之网络函数

WNetAddConnection 创建同一个网络资源的永久性连接

WNetAddConnection2 创建同一个网络资源的连接

WNetAddConnection3 创建同一个网络资源的连接

WNetCancelConnection 结束一个网络连接

WNetCancelConnection2 结束一个网络连接

WNetCloseEnum 结束一次枚举操作

WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接

WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接

WNetEnumResource 枚举网络资源

WNetGetConnection 获取本地或已连接的一个资源的网络名称

WNetGetLastError 获取网络错误的扩展错误信息

WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称

WNetGetUser 获取一个网络资源用以连接的名字

WNetOpenEnum 启动对网络资源进行枚举的过程

2. API之消息函数

BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口

GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置

GetMessageTime 取得消息队列中上一条消息处理完毕时的时间

PostMessage 将一条消息投递到指定窗口的消息队列

PostThreadMessage 将一条消息投递给应用程序

RegisterWindowMessage 获取分配给一个字串标识符的消息编号

ReplyMessage 答复一个消息

SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口

SendMessageCallback 将一条消息发给窗口

SendMessageTimeout 向窗口发送一条消息

SendNotifyMessage 向窗口发送一条消息

3. API之文件处理函数

CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等

CompareFileTime 对比两个文件的时间

CopyFile 复制文件

CreateDirectory 创建一个新目录

CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台

CreateFileMapping 创建一个新的文件映射对象

DeleteFile 删除指定文件

DeviceIoControl 对设备执行指定的操作

DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值

FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值

FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间

FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构

FindClose 关闭由FindFirstFile函数创建的一个搜索句柄

FindFirstFile 根据文件名查找文件

FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件

FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区

FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘

GetBinaryType 判断文件是否可以执行

GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数

GetCurrentDirectory 在一个缓冲区中装载当前目录

GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量

GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息

GetDriveType 判断一个磁盘驱动器的类型

GetExpandedName 取得一个压缩文件的全名

GetFileAttributes 判断指定文件的属性

GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制

GetFileSize 判断文件长度

GetFileTime 取得指定文件的时间信息

GetFileType 在给出文件句柄的前提下,判断文件类型

GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息

GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区

GetFullPathName 获取指定文件的完整路径名

GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母

GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径

GetOverlappedResult 判断一个重叠操作当前的状态

GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值

GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表

GetPrivateProfileString 为初始化文件中指定的条目取得字串

GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值

GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表

GetProfileString 为win.ini初始化文件中指定的条目取得字串

GetShortPathName 获取指定文件的短路径名

GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名

GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用

GetTempPath 获取为临时文件指定的路径

GetVolumeInformation 获取与一个磁盘卷有关的信息

GetWindowsDirectory 获取Windows目录的完整路径名

hread 参考lread

hwrite 参考lwrite函数

lclose 关闭指定的文件

lcreat 创建一个文件

llseek 设置文件中进行读写的当前位置

LockFile 锁定文件的某一部分,使其不与其他应用程序共享

LockFileEx 与LockFile相似,只是它提供了更多的功能

lopen 以二进制模式打开指定的文件

lread 将文件中的数据读入内存缓冲区

lwrite 将数据从内存缓冲区写入一个文件

LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件

LZCopy 复制一个文件

LZInit 这个函数用于初始化内部缓冲区

LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件

LZRead 将数据从文件读入内存缓冲区

LZSeek 设置一个文件中进行读写的当前位置

MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间

MoveFile 移动文件

OpenFile 这个函数能执行大量不同的文件操作

OpenFileMapping 打开一个现成的文件映射对象

QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况

ReadFile 从文件中读出数据

ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调

RegCloseKey 关闭系统注册表中的一个项(或键)

RegConnectRegistry 访问远程系统的部分注册表

RegCreateKey 在指定的项下创建或打开一个项

RegCreateKeyEx 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数

RegDeleteKey 删除现有项下方一个指定的子项

RegDeleteValue 删除指定项下方的一个值

RegEnumKey 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx

RegEnumKeyEx 枚举指定项下方的子项

RegEnumValue 枚举指定项的值

RegFlushKey 将对项和它的子项作出的改动实际写入磁盘

RegGetKeySecurity 获取与一个注册表项有关的安全信息

RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息

RegNotifyChangeKeyValue 注册表项或它的任何一个子项发生变化时,用这个函数提供一种通知机制

RegOpenKey 打开一个现有的注册表项

RegOpenKeyEx 打开一个现有的项。在win32下推荐使用这个函数

RegQueryInfoKey 获取与一个项有关的信息

RegQueryValue 取得指定项或子项的默认(未命名)值

RegQueryValueEx 获取一个项的设置值

RegReplaceKey 用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息

RegRestoreKey 从一个磁盘文件恢复注册表信息

RegSaveKey 将一个项以及它的所有子项都保存到一个磁盘文件

RegSetKeySecurity 设置指定项的安全特性

RegSetValue 设置指定项或子项的默认值

RegSetValueEx 设置指定项的值

RegUnLoadKey 卸载指定的项以及它的所有子项

RemoveDirectory 删除指定目录

SearchPath 查找指定文件

SetCurrentDirectory 设置当前目录

SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾

SetFileAttributes 设置文件属性

SetFilePointer 在一个文件中设置当前的读写位置

SetFileTime 设置文件的创建、访问及上次修改时间

SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果

SetVolumeLabel 设置一个磁盘的卷标(Label)

SystemTimeToFileTime 根据一个FILETIME结构的内容,载入一个SYSTEMTIME结构

UnlockFile 解除对一个文件的锁定

UnlockFileEx 解除对一个文件的锁定

UnmapViewOfFile 在当前应用程序的内存地址空间解除对一个文件映射对象的映射

VerFindFile 用这个函数决定一个文件应安装到哪里

VerInstallFile 用这个函数安装一个文件

VerLanguageName 这个函数能根据16位语言代码获取一种语言的名称

VerQueryValue 这个函数用于从版本资源中获取信息

WriteFile 将数据写入一个文件

WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调

WritePrivateProfileSection 为一个初始化文件(.ini)中指定的小节设置所有项名和值

WritePrivateProfileString 在初始化文件指定小节内设置一个字串

WriteProfileSection 为Win.ini初始化文件中一个指定的小节设置所有项名和值

WriteProfileString 在Win.ini初始化文件指定小节内设置一个字串

4. API之打印函数

AbortDoc 取消一份文档的打印

AbortPrinter 删除与一台打印机关联在一起的缓冲文件

AddForm 为打印机的表单列表添加一个新表单

AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号

AddMonitor 为系统添加一个打印机监视器

AddPort 启动"添加端口"对话框,允许用户在系统可用端口列表中加入一个新端口

AddPrinter 在系统中添加一台新打印机

AddPrinterConnection 连接指定的打印机

AddPrinterDriver 为指定的系统添加一个打印驱动程序

AddPrintProcessor 为指定的系统添加一个打印处理器

AddPrintProvidor 为系统添加一个打印供应商

AdvancedDocumentProperties 启动打印机文档设置对话框

ClosePrinter 关闭一个打开的打印机对象

ConfigurePort 针对指定的端口,启动一个端口配置对话框

ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接

DeleteForm 从打印机可用表单列表中删除一个表单

DeleteMonitor 删除指定的打印监视器

DeletePort 启动"删除端口"对话框,允许用户从当前系统删除一个端口

DeletePrinter 将指定的打印机标志为从系统中删除

DeletePrinterConnection 删除与指定打印机的连接

DeletePrinterDriver 从系统删除一个打印机驱动程序

DeletePrintProcessor 从指定系统删除一个打印处理器

DeletePrintProvidor 从系统中删除一个打印供应商

DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息

DocumentProperties 打印机配置控制函数

EndDocAPI 结束一个成功的打印作业

EndDocPrinter 在后台打印程序的级别指定一个文档的结束

EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页

EndPagePrinter 指定一个页在打印作业中的结尾

EnumForms 枚举一台打印机可用的表单

EnumJobs 枚举打印队列中的作业

EnumMonitors 枚举可用的打印监视器

EnumPorts 枚举一个系统可用的端口

EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序

EnumPrinters 枚举系统中安装的打印机

EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型

EnumPrintProcessors 枚举系统中可用的打印处理器

Escape 设备控制函数

FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象

FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化

FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因

FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区

GetForm 取得与指定表单有关的信息

GetJob 获取与指定作业有关的信息

GetPrinter 取得与指定打印机有关的信息

GetPrinterData 为打印机设置注册表配置信息

GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息

GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么

GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录

OpenPrinter 打开指定的打印机,并获取打印机的句柄

PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框

PrinterProperties 启动打印机属性对话框,以便对打印机进行配置

ReadPrinter 从打印机读入数据

ResetDC 重设一个设备场景

ResetPrinter 改变指定打印机的默认数据类型及文档设置

ScheduleJob 提交一个要打印的作业

SetAbortProc 为Windows指定取消函数的地址

SetForm 为指定的表单设置信息

SetJob 对一个打印作业的状态进行控制

SetPrinter 对一台打印机的状态进行控制

SetPrinterData 设置打印机的注册表配置信息

StartDoc 开始一个打印作业

StartDocPrinter 在后台打印的级别启动一个新文档

StartPage 打印一个新页前要先调用这个函数

StartPagePrinter 在打印作业中指定一个新页的开始

WritePrinter 将发送目录中的数据写入打印机

5. API之文本和字体函数

AddFontResource 在Windows系统中添加一种字体资源

CreateFont 用指定的属性创建一种逻辑字体

CreateFontIndirect 用指定的属性创建一种逻辑字体

CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统

DrawText 将文本描绘到指定的矩形中

DrawTextEx 与DrawText相似,只是加入了更多的功能

EnumFontFamilies 列举指定设备可用的字体

EnumFontFamiliesEx 列举指定设备可用的字体

EnumFonts 列举指定设备可用的字体

ExtTextOut 经过扩展的文本描绘函数。也请参考SetTextAlign函数

GetAspectRatioFilterEx 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小

GetCharABCWidths 判断TureType字体中一个或多个字符的A-B-C大小

GetCharABCWidthsFloat 查询一种字体中一个或多个字符的A-B-C尺寸

GetCharacterPlacement 该函数用于了解如何用一个给定的字符显示一个字串

GetCharWidth 调查字体中一个或多个字符的宽度

GetFontData 接收一种可缩放字体文件的数据

GetFontLanguageInfo 返回目前选入指定设备场景中的字体的信息

GetGlyphOutline 取得TureType字体中构成一个字符的曲线信息

GetKerningPairs 取得指定字体的字距信息

GetOutlineTextMetrics 接收与TureType字体内部特征有关的详细信息

GetRasterizerCaps 了解系统是否有能力支持可缩放的字体

GetTabbedTextExtent 判断一个字串占据的范围,同时考虑制表站扩充的因素

GetTextAlign 接收一个设备场景当前的文本对齐标志

GetTextCharacterExtra 判断额外字符间距的当前值

GetTextCharset 接收当前选入指定设备场景的字体的字符集标识符

GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息

GetTextColor 判断当前字体颜色。通常也称为"前景色"

GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息

GetTextExtentPoint 判断一个字串的大小(范围)

GetTextFace 获取一种字体的字样名

GetTextMetrics 获取与选入一种设备场景的物理字体有关的信息

GrayString 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态

PolyTextOut 描绘一系列字串

RemoveFontResource 从Windows系统中删除一种字体资源

SetMapperFlags Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体

SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置

SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距

SetTextColor 设置当前文本颜色。这种颜色也称为"前景色"

SetTextJustification 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理

TabbedTextOut 支持制表站的一个文本描绘函数

TextOut 文本绘图函数

6. API之菜单函数

AppendMenu 在指定的菜单里添加一个菜单项

CheckMenuItem 复选或撤消复选指定的菜单条目

CheckMenuRadioItem 指定一个菜单条目被复选成"单选"项目

CreateMenu 创建新菜单

CreatePopupMenu 创建一个空的弹出式菜单

DeleteMenu 删除指定的菜单条目

DestroyMenu 删除指定的菜单

DrawMenuBar 为指定的窗口重画菜单

EnableMenuItem 允许或禁止指定的菜单条目

GetMenu 取得窗口中一个菜单的句柄

GetMenuCheckMarkDimensions 返回一个菜单复选符的大小

GetMenuContextHelpId 取得一个菜单的帮助场景ID

GetMenuDefaultItem 判断菜单中的哪个条目是默认条目

GetMenuItemCount 返回菜单中条目(菜单项)的数量

GetMenuItemID 返回位于菜单中指定位置处的条目的菜单ID

GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息

GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息

GetMenuState 取得与指定菜单条目状态有关的信息

GetMenuString 取得指定菜单条目的字串

GetSubMenu 取得一个弹出式菜单的句柄,它位于菜单中指定的位置

GetSystemMenu 取得指定窗口的系统菜单的句柄

HiliteMenuItem 控制顶级菜单条目的加亮显示状态

InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动

InsertMenuItem 插入一个新菜单条目

IsMenu 判断指定的句柄是否为一个菜单的句柄

LoadMenu 从指定的模块或应用程序实例中载入一个菜单

LoadMenuIndirect 载入一个菜单

MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点

ModifyMenu 改变菜单条目

RemoveMenu 删除指定的菜单条目

SetMenu 设置窗口菜单

SetMenuContextHelpId 设置一个菜单的帮助场景ID

SetMenuDefaultItem 将一个菜单条目设为默认条目

SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)

SetMenuItemInfo 为一个菜单条目设置指定的信息

TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单

TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能

7. API之位图、图标和光栅运算函数

BitBlt 将一幅位图从一个设备场景复制到另一个

CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序

CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作

CreateBitmap 按照规定的格式创建一幅与设备有关位图

CreateBitmapIndirect 创建一幅与设备有关位图

CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容

CreateCursor 创建一个鼠标指针

CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图

CreateDIBSection 创建一个DIBSection

CreateIcon 创建一个图标

CreateIconIndirect 创建一个图标

DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源

DestroyIcon 清除图标

DrawIcon 在指定的位置画一个图?

DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能

ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之

ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来

GetBitmapBits 将来自位图的二进制位复制到一个缓冲区

GetBitmapDimensionEx 取得一幅位图的宽度和高度

GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息

GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里

GetIconInfo 取得与图标有关的信息

GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式

LoadBitmap 从指定的模块或应用程序实例中载入一幅位图

LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针

LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针

LoadIcon 从指定的模块或应用程序实例中载入一个图标

LoadImage 载入一个位图、图标或指针

MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理

PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景

PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理

SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图

SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位

SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息

SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里

SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备

SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式

StretchBlt 将一幅位图从一个设备场景复制到另一个

StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景

8. API之绘图函数

AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作

AngleArc 用一个连接弧画一条线

Arc 画一个圆弧

BeginPath 启动一个路径分支

CancelDC 取消另一个线程里的长时间绘图操作

Chord 画一个弦

CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄

CloseFigure 描绘到一个路径时,关闭当前打开的图形

CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄

CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)

CopyMetaFile 制作指定(标准)图元文件的一个副本

CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子

CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)

CreateEnhMetaFile 创建一个增强型的图元文件设备场景

CreateHatchBrush 创建带有阴影图案的一个刷子

CreateMetaFile 创建一个图元文件设备场景

CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子

CreatePen 用指定的样式、宽度和颜色创建一个画笔

CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔

CreateSolidBrush 用纯色创建一个刷子

DeleteEnhMetaFile 删除指定的增强型图元文件

DeleteMetaFile 删除指定的图元文件

DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放

DrawEdge 用指定的样式描绘一个矩形的边框

DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序

DrawFocusRect 画一个焦点矩形

DrawFrameControl 描绘一个标准控件

DrawState 为一幅图象或绘图操作应用各式各样的效果

Ellipse 描绘一个椭圆,由指定的矩形围绕

EndPath 停止定义一个路径

EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录

EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录

EnumObjects 枚举可随同指定设备场景使用的画笔和刷子

ExtCreatePen 创建一个扩展画笔(装饰或几何)

ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域

FillPath 关闭路径中任何打开的图形,并用当前刷子填充

FillRect 用指定的刷子填充一个矩形

FlattenPath 将一个路径中的所有曲线都转换成线段

FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域

FrameRect 用指定的刷子围绕一个矩形画一个边框

GdiComment 为指定的增强型图元文件设备场景添加一条注释信息

GdiFlush 执行任何未决的绘图操作

GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中

GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列

GetArcDirection 画圆弧的时候,判断当前采用的绘图方向

GetBkColor 取得指定设备场景当前的背景颜色

GetBkMode 针对指定的设备场景,取得当前的背景填充模式

GetBrushOrgEx 判断指定设备场景中当前选定刷子起点

GetCurrentObject 获得指定类型的当前选定对象

GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置

GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄

GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里

GetEnhMetaFileDescription 返回对一个增强型图元文件的说明

GetEnhMetaFileHeader 取得增强型图元文件的图元文件头

GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板

GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄

GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区

GetMiterLimit 取得设备场景的斜率限制(Miter)设置

GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色

GetObjectAPI 取得对指定对象进行说明的一个结构

GetObjectType 判断由指定句柄引用的GDI对象的类型

GetPath 取得对当前路径进行定义的一系列数据

GetPixel 在指定的设备场景中取得一个像素的RGB值

GetPolyFillMode 针对指定的设备场景,获得多边形填充模式

GetROP2 针对指定的设备场景,取得当前的绘图模式

GetStockObject 取得一个固有对象(Stock)

GetSysColorBrush 为任何一种标准系统颜色取得一个刷子

GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件

InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形

LineDDA 枚举指定线段中的所有点

LineTo 用当前画笔画一条线,从当前位置连到一个指定的点

MoveToEx 为指定的设备场景指定一个新的当前画笔位置

PaintDesk 在指定的设备场景中描绘桌面墙纸图案

PathToRegion 将当前选定的路径转换到一个区域里

Pie 画一个饼图

PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件

PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录

PlayMetaFile 在指定的设备场景中回放一个图元文件

PlayMetaFileRecord 回放来自图元文件的单条记录

PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线

PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成

Polygon 描绘一个多边形

Polyline 用当前画笔描绘一系列线段

PolyPolygon 用当前选定画笔描绘两个或多个多边形

PolyPolyline 用当前选定画笔描绘两个或多个多边形

Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充

RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充

SelectClipPath 将设备场景当前的路径合并到剪切区域里

SelectObject 为当前设备场景选择图形对象

SetArcDirection 设置圆弧的描绘方向

SetBkColor 为指定的设备场景设置背景颜色

SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式

SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点

SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件

SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件

SetMiterLimit 设置设备场景当前的斜率限制

SetPixel 在指定的设备场景中设置一个像素的RGB值

SetPixelV 在指定的设备场景中设置一个像素的RGB值

SetPolyFillMode 设置多边形的填充模式

SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致

SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件

StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域

StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭

UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数

WidenPath 根据选定画笔的宽度,重新定义当前选定的路径

9. API之设备场景函数

CombineRgn 将两个区域组合为一个新区域

CombineTransform 驱动世界转换。它相当于依顺序进行两次转换

CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景

CreateDC 为专门设备创建设备场景

CreateEllipticRgn 创建一个椭圆

CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域

CreateIC 为专用设备创建一个信息场景

CreatePolygonRgn 创建一个由一系列点围成的区域

CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的

CreateRectRgn 创建一个矩形区域

CreateRectRgnIndirect 创建一个矩形区域

CreateRoundRectRgn 创建一个圆角矩形

DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源

DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标

EqualRgn 确定两个区域是否相等

ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图

ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域

ExtCreateRegion 根据世界转换修改区域

ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区

FillRgn 用指定刷子填充指定区域

FrameRgn 用指定刷子围绕指定区域画一个外框

GetBoundsRect 获取指定设备场景的边界矩形

GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形

GetClipRgn 获取设备场景当前剪裁区

GetDC 获取指定窗口的设备场景

GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项

GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)

GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息

GetGraphicsMode 确定是否允许增强图形模式(世界转换)

GetMapMode 为特定设备场景调入映象模式

GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区

GetRgnBox 获取完全包含指定区域的最小矩形

GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新

GetViewportExtEx 获取设备场景视口(viewport)范围

GetViewportOrgEx 获取设备场景视口起点

GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景

GetWindowExtEx 获取指定设备场景的窗口范围

GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点

GetWindowRgn 获取窗口区域

GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换

IntersectClipRect 为指定设备定义一个新的剪裁区

InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画

InvertRgn 通过颠倒每个像素值反转设备场景指定区域

LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标

ModifyWorldTransform 根据指定的模式修改世界转换

OffsetClipRgn 按指定量平移设备场景剪裁区

OffsetRgn 按指定偏移量平移指定区域

OffsetViewportOrgEx 平移设备场景视口区域

OffsetWindowOrgEx 平移指定设备场景窗口起点

PaintRgn 用当前刷子背景色填充指定区域

PtInRegion 确定点是否在指定区域内

PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)

RectInRegion 确定矩形是否有部分在指定区域内

RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)

ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景

RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景

SaveDC 将指定设备场景状态保存到Windows设备场景堆栈

ScaleViewportExtEx 缩放设备场景视口的范围

ScaleWindowExtEx 缩放指定设备场景窗口范围

ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形

SelectClipRgn 为指定设备场景选择新的剪裁区

SetBoundsRect 设置指定设备场景的边界矩形

SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)

SetMapMode 设置指定设备场景的映射模式

SetRectRgn 设置区域为指定的矩形

SetViewportExtEx 设置设备场景视口范围

SetViewportOrgEx 设置设备场景视口起点

SetWindowExtEx 设置指定设备场景窗口范围

SetWindowOrgEx 设置指定设备场景窗口起点

SetWindowRgn 设置窗口区域

SetWorldTransform 设置世界转换

ValidateRgn 激活窗口中指定区域,把它从刷新区移走

WindowFromDC 取回与某一设备场景相关的窗口的句柄

10. API之硬件与系统函数

ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义

Beep 用于生成简单的声音

CharToOem 将一个字串从ANSI字符集转换到OEM字符集

ClipCursor 将指针限制到指定区域

ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID

CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符

DestroyCaret 清除(破坏)一个插入符

EnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息

EnumDateFormats 列举指定的"当地"设置中可用的长、短日期格式

EnumSystemCodePages 枚举系统中已安装或支持的代码页

EnumSystemLocales 枚举系统已经安装或提供支持的"地方"设置

EnumTimeFormats 枚举一个指定的地方适用的时间格式

ExitWindowsEx 退出windows,并用特定的选项重新启动

ExpandEnvironmentStrings 扩充环境字串

FreeEnvironmentStrings 翻译指定的环境字串块

GetACP 判断目前正在生效的ANSI代码页

GetAsyncKeyState 判断函数调用时指定虚拟键的状态

GetCaretBlinkTime 判断插入符光标的闪烁频率

GetCaretPos 判断插入符的当前位置

GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域

GetCommandLine 获得指向当前命令行缓冲区的一个指针

GetComputerName 取得这台计算机的名称

GetCPInfo 取得与指定代码页有关的信息

GetCurrencyFormat 针对指定的"地方"设置,根据货币格式格式化一个数字

GetCursor 获取目前选择的鼠标指针的句柄

GetCursorPos 获取鼠标指针的当前位置

GetDateFormat 针对指定的"当地"格式,对一个系统日期进行格式化

GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间

GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄

GetEnvironmentVariable 取得一个环境变量的值

GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件

GetKBCodePage 由GetOEMCP取代,两者功能完全相同

GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局

GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表

GetKeyboardLayoutName 取得当前活动键盘布局的名称

GetKeyboardState 取得键盘上每个虚拟键当前的状态

GetKeyboardType 了解与正在使用的键盘有关的信息

GetKeyNameText 在给出扫描码的前提下,判断键名

GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态

GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息

GetLocaleInfo 取得与指定"地方"有关的信息

GetLocalTime 取得本地日期和时间

GetNumberFormat 针对指定的"地方",按特定的格式格式化一个数字

GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页

GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型

GetSysColor 判断指定windows显示对象的颜色

GetSystemDefaultLangID 取得系统的默认语言ID

GetSystemDefaultLCID 取得当前的默认系统"地方"

GetSystemInfo 取得与底层硬件平台有关的信息

GetSystemMetrics 返回与windows环境有关的信息

GetSystemPowerStatus 获得与当前系统电源状态有关的信息

GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式

GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步

GetThreadLocale 取得当前线程的地方ID

GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)

GetTimeFormat 针对当前指定的"地方",按特定的格式格式化一个系统时间

GetTimeZoneInformation 取得与系统时区设置有关的信息

GetUserDefaultLangID 为当前用户取得默认语言ID

GetUserDefaultLCID 取得当前用户的默认"地方"设置

GetUserName 取得当前用户的名字

GetVersion 判断当前运行的Windows和DOS版本

GetVersionEx 取得与平台和操作系统有关的版本信息

HideCaret 在指定的窗口隐藏插入符(光标)

IsValidCodePage 判断一个代码页是否有效

IsValidLocale 判断地方标识符是否有效

keybd_event 这个函数模拟了键盘行动

LoadKeyboardLayout 载入一个键盘布局

MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换

MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换

MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的

mouse_event 模拟一次鼠标事件

OemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态

OemToChar 将OEM字符集的一个字串转换到ANSI字符集

SetCaretBlinkTime 指定插入符(光标)的闪烁频率

SetCaretPos 指定插入符的位置

SetComputerName 设置新的计算机名

SetCursor 将指定的鼠标指针设为当前指针

SetCursorPos 设置指针的位置

SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间

SetEnvironmentVariable 将一个环境变量设为指定的值

SetKeyboardState 设置每个虚拟键当前在键盘上的状态

SetLocaleInfo 改变用户"地方"设置信息

SetLocalTime 设置当前地方时间

SetSysColors 设置指定窗口显示对象的颜色

SetSystemCursor 改变任何一个标准系统指针

SetSystemTime 设置当前系统时间

SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步

SetThreadLocale 为当前线程设置地方

SetTimeZoneInformation 设置系统时区信息

ShowCaret 在指定的窗口里显示插入符(光标)

ShowCursor 控制鼠标指针的可视性

SwapMouseButton 决定是否互换鼠标左右键的功能

SystemParametersInfo 获取和设置数量众多的windows系统参数

SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间

ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符

ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符

UnloadKeyboardLayout 卸载指定的键盘布局

VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态

11. API之进程和线程函数

CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作

CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用

ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接

CreateEvent 创建一个事件对象

CreateMailslot 创建一个邮路。返回的句柄由邮路服务器使用(收件人)

CreateMutex 创建一个互斥体(MUTEX)

CreateNamedPipe 创建一个命名管道。返回的句柄由管道的服务器端使用

CreatePipe 创建一个匿名管道

CreateProcess 创建一个新进程(比如执行一个程序)

CreateSemaphore 创建一个新的信号机

CreateWaitableTimer 创建一个可等待的计时器对象

DisconnectNamedPipe 断开一个客户与一个命名管道的连接

DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄

ExitProcess 中止一个进程

FindCloseChangeNotification 关闭一个改动通知对象

FindExecutable 查找与一个指定文件关联在一起的程序的文件名

FindFirstChangeNotification 创建一个文件通知对象。该对象用于监视文件系统发生的变化

FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化

FreeLibrary 释放指定的动态链接库

GetCurrentProcess 获取当前进程的一个伪句柄

GetCurrentProcessId 获取当前进程一个唯一的标识符

GetCurrentThread 获取当前线程的一个伪句柄

GetCurrentThreadId 获取当前线程一个唯一的线程标识符

GetExitCodeProces 获取一个已中断进程的退出代码

GetExitCodeThread 获取一个已中止线程的退出代码

GetHandleInformation 获取与一个系统对象句柄有关的信息

GetMailslotInfo 获取与一个邮路有关的信息

GetModuleFileName 获取一个已装载模板的完整路径名称

GetModuleHandle 获取一个应用程序或动态链接库的模块句柄

GetPriorityClass 获取特定进程的优先级别

GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况

GetProcessTimes 获取与一个进程的经过时间有关的信息

GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存

GetSartupInfo 获取一个进程的启动信息

GetThreadPriority 获取特定线程的优先级别

GetTheardTimes 获取与一个线程的经过时间有关的信息

GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符

LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间

LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间

LoadModule 载入一个Windows应用程序,并在指定的环境中运行

MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。如返回条件已经满足,则立即返回

SetPriorityClass 设置一个进程的优先级别

SetProcessShutdownParameters 在系统关闭期间,为指定进程设置他相对于其它程序的关闭顺序

SetProcessWorkingSetSize 设置操作系统实际划分给进程使用的内存容量

SetThreadPriority 设定线程的优先级别

ShellExecute 查找与指定文件关联在一起的程序的文件名

TerminateProcess 结束一个进程

WinExec 运行指定的程序

12. API之控件与消息函数

AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小

AnyPopup 判断屏幕上是否存在任何弹出式窗口

ArrangeIconicWindows 排列一个父窗口的最小化子窗口

AttachThreadInput 连接线程输入函数

BeginDeferWindowPos 启动构建一系列新窗口位置的过程

BringWindowToTop 将指定的窗口带至窗口列表顶部

CascadeWindows 以层叠方式排列窗口

ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄

ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标

CloseWindow 最小化指定的窗口

CopyRect 矩形内容复制

DeferWindowPos 该函数为特定的窗口指定一个新窗口位置

DestroyWindow 清除指定的窗口以及它的所有子窗口

DrawAnimatedRects 描绘一系列动态矩形

EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入

EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态

EnumChildWindows 为指定的父窗口枚举子窗口

EnumThreadWindows 枚举与指定任务相关的窗口

EnumWindows 枚举窗口列表中的所有父窗口

EqualRect 判断两个矩形结构是否相同

FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口

FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口

FlashWindow 闪烁显示指定窗口

GetActiveWindow 获得活动窗口的句柄

GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)

GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息

GetClassLong 取得窗口类的一个Long变量条目

GetClassName 为指定的窗口取得类名

GetClassWord 为窗口类取得一个整数变量

GetClientRect 返回指定窗口客户区矩形的大小

GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄

GetFocus 获得拥有输入焦点的窗口的句柄

GetForegroundWindow 获得前台窗口的句柄

GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄

GetParent 判断指定窗口的父窗口

GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄

GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分

GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系

GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID

GetWindowLong 从指定窗口的结构中取得信息

GetWindowPlacement 获得指定窗口的状态及位置信息

GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内

GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容

GetWindowTextLength 调查窗口标题文字或控件内容的长短

GetWindowWord 获得指定窗口结构的信息

InflateRect 增大或减小一个矩形的大小

IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集

InvalidateRect 屏蔽一个窗口客户区的全部或部分区域

IsChild 判断一个窗口是否为另一窗口的子或隶属窗口

IsIconic 判断窗口是否已最小化

IsRectEmpty 判断一个矩形是否为空

IsWindow 判断一个窗口句柄是否有效

IsWindowEnabled 判断窗口是否处于活动状态

IsWindowUnicode 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字

IsWindowVisible 判断窗口是否可见

IsZoomed 判断窗口是否最大化

LockWindowUpdate 锁定指定窗口,禁止它更新

MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统

MoveWindow 改变指定窗口的位置和大小

OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来

OpenIcon 恢复一个最小化的程序,并将其激活

PtInRect 判断指定的点是否位于矩形内部

RedrawWindow 重画全部或部分窗口

ReleaseCapture 为当前的应用程序释放鼠标捕获

ScreenToClient 判断屏幕上一个指定点的客户区坐标

ScrollWindow 滚动窗口客户区的全部或一部分

ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分

SetActiveWindow 激活指定的窗口

SetCapture 将鼠标捕获设置到指定的窗口

SetClassLong 为窗口类设置一个Long变量条目

SetClassWord 为窗口类设置一个条目

SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口

SetForegroundWindow 将窗口设为系统的前台窗口

SetParent 指定一个窗口的新父

SetRect 设置指定矩形的内容

SetRectEmpty 将矩形设为一个空矩形

SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID

SetWindowLong 在窗口结构中为指定的窗口设置信息

SetWindowPlacement 设置窗口状态和位置信息

SetWindowPos 为窗口指定一个新位置和状态

SetWindowText 设置窗口的标题文字或控件的内容

SetWindowWord 在窗口结构中为指定的窗口设置信息

ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口

ShowWindow 控制窗口的可见性

ShowWindowAsync 与ShowWindow相似

SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果

TileWindows 以平铺顺序排列窗口

UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果

UpdateWindow 强制立即更新窗口

ValidateRect 校验窗口的全部或部分客户区

WindowFromPoint 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口

本文收集了很多平时我们在使用windows中不为人知的技巧,通过这些技巧的了解,可以让你轻松的玩转windows,使你不再为一些小事而烦恼。  

  1、影音文件在xp中无法删除

  很多情况下是因为预览功能出了问题。开始 运行中输入并执行“REGSVR32 /U SHMEDIA.DLL”,取消息预览。

  恢复时运行“REGSVR32 SHMEDIA.DLL”

  其实就是去掉预览功能

  2、注册表解锁

  方法一:

  REGEDIT4 [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem] "DisableRegistryTools"=dword:00000000

  3、在xp下重装ie:

  运行 注册表编辑器,找到[HKEY_LOCAL_MACHINESOFTWAREMicrosoftActive SetupInstalled Components{89820200-ECBD-11cf-8B85-00AA005B4383}],把键值从1改成0,重启后xp将自动开始安装 ie6

  4、永久不开启3721

  - Win9x/Me

  编辑文件 X:Windowshosts,添加一行代码:

  download.3721.com 255.255.255.255

  - WinNT/2000

  编辑文件 X:WINNTsystem32driversetchosts,添加一行代码:

  255.255.255.255 download.3721.com

  - WinXP

  编辑文件 X:Windowssystem32driversetchosts,添加一行代码:

  255.255.255.255 download.3721.com

  对于 CNNIC 的中文域名也可以用,域名改成 cdn2.cnnic.cn

  5、任务栏里的显示桌面丢失了怎么办?

  简单的方法::

  记事本新建输入:

  [Shell]

  Command=2

  IconFile=explorer.exe,3

  [Taskbar]

  Command=ToggleDesktop

  保存为 显示桌面.scf

  拖到快速启动

6、WIN98中用快捷方式实现一键关机

  每次关闭计算机,都需要执行“开始/关闭计算机”命令,给本来就很简单的关机操作带来了很多麻烦,下面介绍一种实现一键关机的方法。

  首先需要在桌面的空白处单击鼠标右键,并且新建立一个“快捷方式”,在弹出的创建快捷方式对话窗口中,在“命令行”中输入“C:windowsRUNDLL32.EXE user,ExitWindows”,然后单击“下一步”按钮,给该快捷方式命名为“一键关机”,这时系统的桌面上就会出现刚才建立的快捷方式了,打开该快捷方式的属性窗口,进入“快捷方式”页,并且给该快捷方式自定义一个快捷功能键,如F11,完成以后,就可以按F11键执行关机命令。  

  7、将MP3中音质不好的部分去除

  修正MP3歌曲可以通过mp3Trim软件来实现。  运行程序之后载入需要修正的MP3歌曲,首先要知道需要截取的是哪一部分,在“从头部”处输入截取部分的开始时间,单击右边的小喇叭按钮,同时在“从尾部” 处输入时间(这个时间是从文件末尾往前推的时间,所以此时间需用音乐总的时间减去刚才记下的时间来得到),单击右边的小喇叭按钮,紧接着选择保存便大功告成了。  除了从时间选择截取片段,mp3Trim支持从帧来选择截取片段,其操作方法与时间截取大同小异,而且其他诸如音量控制、淡入淡出效果等功能也很有特色。

  8、双击窗口左上角的图标可以关闭窗口

  如果同时有多个窗口打开,想要关闭的话,可以按住shift不放然后点击窗口右上角的关闭图标

  9、 输入法问题:

  1)、解决安装officexp输入法图标问题:  只要把 x:windowssystem(x为安装windows的盘符)文件夹下的ctfmon.exe在dos下删除或改名即可。(用该法操作后第一次启动电脑时,如发现输入法图标不再系统托盘中,可在控制面板的输入法图标 中把它找回来)

  2)、找回office2003的输入窗口:  在注册表中[HKEY_CURRENT_USER/Control Panel/Input Method/]下的Show Status值变为0,将其改为1。并重新登陆即可解决问题。  

  10、用记事本 减肥win2k

  进入c:winntinfsysoc.inf在编辑菜单中选替换,在查找中输入“hide,”点击全部替换,在添加删除中可出现一些常见的选项,你可根据自己的需要进行选择。  fc /purgecache  在运行里输入这个命令回车,可以清理很多缓存和一些备份文件,通常都能去掉300-400M的文件,对系统没有任何伤害,xp通用。

  11、用ghost压缩

  随便找一个gho镜像文件,用ghost explorer把文件中的内容删除。用ghost explorer打开空gho文件,并在ghost explorer的窗口里点右键粘贴或是直接把文件拖进窗口就行了。  (ghost explorer的压缩速度比winrar还要快,而添加、删除等都可以方便实现,用起来就象资源管理器一样)

  12、win2000/XP在遇到系统严重问题无法启动

  可以利用故防恢复控制台,把c:windowsrepair文件夹中保存的初始化注册表文件(system、software、 sam、security、default),复制进system32config(先将其同容备份后删除)中来换救系统 
  13、手动下载xp升级补丁

  许多朋友在装好sp1后通过windows update网上升级后还会发现有许多升级补丁,但是,如果通过windows update网上升级速度奇慢,有什么办法可以加速下载呢?通过实践,我发现一个小窍门。  

  步骤: 

  1):通过开始菜单里的windows update进行上网升级

  2):选择“扫描以寻找更新”查找升级补丁。  

  3):“复查并安装更新”开始查看更新补丁说明。 

  4):点击“立即安装”跳出windows update–网页对话框开始下载补丁 

  5):选择取消,退出升级 

  6):打开c:windowsWindows Update.log

  看见了吧!你所要得补丁下载地址都在这里!现在所要做的就是复制下载链接地址用网际快车(FlashGet)这类的下载软件进行下载。

14、利用fc和>来分析注册表

  例如,我们可以在安装软件前份一次注册表(如:c:first.reg),安装后再导出注册表文件(c:second.red)然后再在MS-DOS方式(纯DOS方式也行)下执行下列命令:  c:>fc first,reg second.reg>fc.txt (回车)  再打开fc,txt文件,即可查看该软件对注册表添加了哪些子项了。  注:重定向输入的文件类型一般为.txt形式也可以,如.wps 、.doc等,前提是必须安装相应的文件打开程序 

  15、轻松破解foxmail账户口令

  在foxmail中为了账户的安全,我们一般会为账户设置一个口令,如果忘了也不要紧。打开mail目录下以你的帐户命令的文件夹,删除accounf.stg。口令解除了。  不用删除,改个后缀名即可。系统会自动创建一个新的accounf.stg文件,出来后删除此文件,再改回原accounf.stg文件后缀,就能神不知鬼不觉看别人的邮件了。不过最好不要用于非法用途。  

  16、局域网隐身法: 

  在局域网中常通过网上邻居查看局域网中其他用户的在线情况,如果你不希望别的用户知道你是否在线,这时可以在win2000/xp下运行cmd然后再运行net config server /hidden:yes 回车后就隐身啦。如果要取消只要把yes 改成no17、用winrar合并mp3:

  把几首要合并的mp3文件选中,右键单击——添加到档案文件,压缩方式选择存储。然后把压缩好的文件后缀改成mp3。再放一下听听是不是两首歌已经合成一首啦。

  18、禁用设备驱动更新向导

  这个设置可以允许你在设备管理器中禁用通过windows Update升级设备的驱动程序。  要进行这个设置,可以按以下步骤进行操作:在任务栏上点击开始按钮,然后在开始菜单中点击运行,输入regedit并点击确定,打开注册表编辑器。展开HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindows NTDriver Signing  创建一个名为“NoDevMgrUpdate”的DWORD 键,然后设置键值为“1”。你修改的设置会在你重启动电脑后生效

  19、改变驱动签名验证选项

  这个设置可以让你决定在安装未经过签名或者测试的驱动程序时系统采取怎样的操作。要进行这个设置,可以按照以下步骤进行操作:在任务栏上点击开始按钮,然后在开始菜单中点击运行,输入regedit并点击确定,打开注册表编辑器。展开 HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindows NTDriver Signing 创建一个名为“BehaviorOnFailedVerify”的DWORD 键,设置键值为“0”。你修改的设置会在你重启动电脑后生效。

  20、卸载传真和图片查看器

  如果不想用XP自带的传真和图片查看器,你可以运行这个命令卸载它:  regsvr32 /u shimgvw.dll

  21、禁止officexp输入条

  先在添加/删除程序里把《中文可选输入方法》禁用,然后在区域设置详细信息将除“英语(美国)”之外的其它 输入法删除,最后运行

  regsvr32 /u msimtf.dll  regsvr32 /u msctf.dll

  22、豪杰超级解霸V8

  只要将安装目录中的VCvtShell.dll改名就可以去掉资源管理器中的按钮.

  23、系统是2K或xp,如果你的系统分区是fat32格式,如果非法关机,下次启动的时候系统会运行磁盘扫描程序,但是启动的时候总是会有10秒钟的等待时间,如何去掉呢? 

  只要一个命令即可:  CHKNTFS /t:0  上面的0是等待秒数。

  24、2k系统老是提示“无法装载动态链接库***.dll,系统找不到指定文件“把该文件copy到原路径也没用,这时你可以试试dos下的这个命令来修复系统文件:

  fc /scanonce  如果需要的话会提示插入2k光盘,然后重启就应该可

25、MyIE2里怎么改google搜索

  MYIE2>设置中心>快捷搜索>*是默认搜索,最新"简体"中文搜索是www.google.com/search?q=% … 2&lr=lang_zh-CN 

  26、不用重新启动都可以应用修改后的注册表

  修改注册表后,保存对注册表的修改。然后同时按下“Ctrl+Alt+Del”组合键,在弹出的Windows任务列表,加亮“Explore”,单击“结束任务”,显示关机屏幕,单击“否”,稍候,弹出错误信息,单击“结束任务”,Windows浏览器即会和新的注册表一起重新装载。

  27、QQ自己加自己的方法:

  在黑名单中加自己,然后再把自己拖到我的好友中就可 以了,然后再运行注册向导.

  28、启动Winamp,并播放一首MP3,然后按住[SHIFT]不放,再单击面板上的“停止”按钮 ,你会发现音乐没有立即停止,而是逐渐降低音量直至完全消失,就象电台DJ做的一样 

  29、原来硬盘图标也可以这么漂亮啊!

  首先你得在网上下载几个你喜欢的图标(后缀名为.ico),分别放入每个驱动器的根目录下面,命名为如1.ico 然后新建一记事本,输入  [autorun]  icon=1.ico  然后保存为autorun.inf就可以了,重启系统就能看到效果了!另外最好把这两个文件的属性设置为"隐藏"。

  主要是因为如果不这样做的话,你打开每个驱动器都可以看见这么两个文件,太丑了,而且也使我们把硬盘图标变漂亮的秘密给暴露了!

  而且这一招还可以应用到光盘上,在你刻录的光盘上也加入一个autorun.inf文件和一个图标,那么你的光盘也会有这样的一个图标!

  另外,把autorun.inf的内容改成:  [autorun]  open=xxx.exe  插入光盘时便会自动运行xxx.exe这个文件,这一招也很实用!

  30、 RealOne Player是一个非常优秀的音视频播放软件,美中不足的是启动时间比较长,那我们何不想点办法来加快RealOne Player的启动速度呢?

  1). 无声地启动

  执行“开始→搜索→文件或文件夹”命令,分别查找“netid.smi”和“getmedia.ini”文件,找到后将它们更名,比如更名为 “netid-old.smi”和“getmedia-old.ini”,此后当你再次启动RealOne Player时,就不会再有欢迎音乐,软件也不会再尝试连接软件主页了。

  2). 省略软件简介

  在“Tools→Album info”中选中“Hide”项,则以后RealOne Player就不再显示产品简介了。 关闭媒体浏览器  RealOne Player提供了一个媒体浏览器,关闭它的方法是:在RealOne Player窗口右上角“关闭”按钮的下面,“地球”按钮的右面,找到一个三角箭头,单击这个箭头打开其下拉菜单,取消“show media browser”项前的勾即可  再次启动RealOne Player,感觉速度是不是快了许多?

  31、 让中文文件名按笔画排序

  在Windows 的资源管理器中,不管文件(或文件夹)名是英文还是中文,当我们用“详细信息”方式查看时,在文件列表标题“名称”上单击,文件名默认的排序方式都是按字母的顺序排列的。  

  如果你有大量的中文文件名,那么让中文文件名按笔画排序会更符合我们的使用习惯。方法是:在Windows XP中双击“控制面板→区域和语言选项”,切换到“区域选项”选项卡,单击“自定义”按钮打开“自定义区域选项”对话框,单击“排序”选项卡。

在排序方法下拉列表中选择“笔画”。重新启动计算机后,打开资源管理器,单击文件列表标题“名称”,会发现中文文件名已经按笔画多少排序了!  注意:该设置只影响中文名称文件,不管以“发音”还是以“笔画”排序,用英文命名的文件,其排序方式总是按名称排序。

  32、 巧破网页禁用鼠标右键

  巧破网页禁用鼠标右键

  第一种情况,出现版权信息类的。破解方法如下:在页面目标上按下鼠标右键,弹出限制窗口,这时不要松开右键,将鼠标指针移到窗口的“确定”按钮上,同时按下左键。现在松开鼠标左键,限制窗口被关闭了,再将鼠标移到目标上松开鼠标右键,哈哈,弹出了鼠标右键菜单,限制取消了!

  第二种情况,出现“添加到收藏夹”的。破解方法如下: 在目标上点鼠标右键,出现添加到收藏夹的窗口,这时不要松开右键,也不要移动鼠标,而是使用键盘的TAB键,移动焦点到取消按钮上,按下空格键,这时窗口就消失了,松开右键后,我们熟悉的右键菜单又出现了。

  第三种情况,超链接无法用鼠标右键弹出“在新窗口中打开”菜单的。这时用上面的两种方法无法破解,看看我这一招:在超链接上点鼠标右键,弹出窗口,这时不要松开右键,按键盘上的空格键,窗口消失了,这时松开右键,可爱的右键菜单又出现了,选择其中的“在新窗口中打开”就可以了。

  上面的方法你全都知道?那再看下面的你知道不知道?在浏览器中点击“查看”菜单上的“源文件”命令,这样就可以看到html源代码了。不过如果网页使用了框架,你就只能看到框架页面的代码,此方法就不灵了,别急,我还有别的办法。你按键盘上的Shift+F10组合键试试,可以直接调出右键菜单!

  再看我这一招:看见键盘右Ctrl键左边的那个键了吗?按一下试试,右键菜单直接出现了!这一招在江湖上可是很少见到的,如何?还不行吗? 看来必须使出我的独门绝招了!

  要看仔细了,这可是江湖上从来没有出现过的“无敌****”哦!在屏蔽鼠标右键的页面中点右键,出现限制窗口,此时不要松开右键,用左手按键盘上的ALT+F4组合键,这时窗口就被我们关闭了,松开鼠标右键,菜单出现了!这一招一使出来,以上所有情况都可轻易破解掉。

  33、 键盘“Print Screen”键的妙用四则 

  1、代替屏幕截图软件  

  按下Print Screen键,将会截取全屏幕画面。用鼠标点击“开始→程序→附件→画图”,将会打开“画图”程序,点击该窗口中的“编辑→粘贴”菜单,这时会弹出一个 “剪贴板中的图像比位图大,是否扩大位图?”对话框,点击“是”,就会将该截取的图片粘贴到其中。再按下Ctrl+S键将图片保存即可。

  2、抓取当前活动窗口    

  在使用Print Screen进行屏幕抓图时,同时按下Alt键,就会只抓取当前活动窗口,然后按上述方法保存即可。

  3、截取游戏画面  

  我们都知道用键盘上的Print Screen键可以抓取系统中的桌面图案,然后在“画图”程序或是Photoshop之类的图像处理软件中可以“粘贴”出来。但是如果我们要抓的是游戏画面的话,上面这个方法可能就不灵光了。没关系,启动Windows Media Player(6.0以上版本),打开一个视频文件,选择“文件→属性→高级”,双击Video Renderer,在Direct Draw中,把YUV Flipping、RGB Flipping、YUV Overlaya和RGB Overlays四个选项取消,确定后退出。再试试看,用Print Screen键也可以抓游戏画面了。

  4、截取DirectX图  

  MPrint Screen键无法截取DirectX图,没关系,只要我们略施小计,就可以让它大展拳脚。在“开始”菜单的“运行”中输入regedit,打开 注册表编辑器,然后展开注册表到HKEY_Local_MachineSoftwareMicrosoftDirectDraw分支,新建一个“DWORD”值,并将其重命名为“EnablePrintScreen”,填入键值“1”,即可使Print Screen键具有截取DirectX图的功能。

35、快捷使用你的软件

  在桌面上找到你最常用的软件的图标,点右键-属性,将快捷方式选项更改为你认为最合适的,比如我的myie2是F9,winamp是F10,QQ是F11,再在myie外部工具栏里添加你上网常用的软件,这样我开机时只要按F9、F10、F11,我三个最常用的软件就很快打开了,但是最好不要将快捷键设置与系统常用的相同,一般设置时会提示的!

  36、用下载软件查看隐藏分区

  操作系统:WINDOWS XP 分区格式:FAT32 下载软件:网际快车、影音传送带、迅雷、BT精灵   

  隐藏分区软件:优化大师或是通过修改注册表,原理是一样的,具体的不再详细说明。

  本人是用优化大师的优化功能隐藏了h盘。 

  情况一:下载工具中有H盘软件或文件的下载记录。 比如曾经用上面的任何一个下载工具下载了QQ在H盘,记录未删除。此时选择这个记录,以快车为例,任务-打开下载的文件目录,你会发现隐藏的H盘被打开,里面的文件可以进行操作了!呵呵!

  情况二:下载工具中无隐藏分区的相关文件下载记录或无任何记录,而你怀疑或是知道隐藏了某个分区(比如我们现在知道我的电脑上隐藏了H盘),此时任意找到一个下载链接,以快车为例,用快车下载,保存在H盘任意一文件夹下,不一定要下载完毕,然后任务-打开下载的文件目录,H盘就被打开了,当然前提是确实隐藏了H盘。

  37、winxp自带批量重命名功能

  只要选中一堆文件,选重命名,然后改第一个文 件,改完后,其他文件也会自动修改。

  38、 改变win98录音机的录音长度限制

  1).打开录音机,安下“录音”按钮,这时在录音窗口右侧显示本次录音的长度为60秒,左侧显示本次录音的位置。

  2).待录音进行到一定的位置后,按下“停止”按钮。

  3).打开“效果”菜单,选择“减速”,这时你会发现录音窗口右面显示长度为100秒。不断重复操作,直到录音长度增加到合适长度。

  4).按“收索到开头”按钮,然后再按“录音”开始正式录音,这时候录音的长度就不是一分钟了!

  39、Word文档加密小技巧

  文件菜单设置:

  1、打开需要加密的Word文档。

  2、选“文件”的“另存为”,出现“另存为”对话框,在“工具”中选“常规选项”,出现“保存”选项卡。

  3、分别在“打开权限密码”和“修改权限密码”中输入密码(这两种密码可以相同也可以不同)。

  4、再次确认“打开权限密码”和“修改权限密码”。按“确定”退出“保存”选项卡。

  5、文件存盘。  

  由工具菜单设置:

  1、打开需要加密的Word文档。

  2、选“工具”菜单的“选项”命令,出现“选项对话框”。

  3、在“选项”对话框中选“保存”选项卡。

  4、分别在“打开权限密码”和“修改权限密码”中输入密码,点“确定”退出。

  5、将文件保存。 

  对模板加密  

  如果我们不想别人使用Word提供的通用模板(Narmal.dot)或自己精心创作的一个模板,可以对该模板进行加密,其方法是:

  1、打开通用模板文件(文件名是Narmal.dot,通常可以在C:\ProgramFiles\Mi-crosoft\Templetas文件夹中找到)。

  2、按上面的两种方法设置密码。

  3、点“工具栏”中的保存(或选“文件”菜单的“保存”)。以后每次启动Word时,就会提示你输入密码。  

  40、如何输入汉语拼音中的音调符号(如:ā、ě、ū、ǔ、ü、á等)

  方法一:word软件中,单击“插入”/“符号”在弹出的“符号”对话框的“子集”框中选择“拉丁语扩展-A”然后在中间的大框中选择想要的符号,单击对话框下面的“插入”,再单击“关闭”。

  方法二:在“智能ABC 输入法”中文输入状态,输入“V8”,然后在列表中选择即可。(顺便说一下,当在“智能ABC输入法”中文输入状态,输入“V”+“一个0-9的数字”,如“V1”、“V2”…,你会发现许多令人吃惊的玩意。

  41、 删除“运行”中的历史记录

  选择“开始”菜单中的“关闭系统”命令,然后在弹出的对话框中选择“否”返回Windows,再看看“运行”中的历史记录是不是都消除了呢?

  42、 让“我的电脑”高高在上

  默认情况下,在资源管理器中,Windows XP会把“我的文档”图标放在“我的电脑”图标上面。

  这种排列顺序让很多人在使用中感到很不适应。通过修改注册表,我们可以让“我的电脑”图标“跑”到“我的文档”图标之上,其操作方法是:  单击“开始→运行”,键入“Regedit”后回车,打开注册表编辑器,依次展开[HKEY_CLASSES_ROOTCLSID]分支,双击右侧窗口中名为“SortOrderIndex”的DWORD值,将它的值由“48”改为“54”即可。

  43、彻底删除“我的文档”

  在Windows XP中,当我们删除“我的文档”中的“我的音乐”、“图片收藏”等文件夹后,重新启动计算机后又会产生这几个文件夹。其实,要想彻底删除“我的音乐”、 “图片收藏”等文件夹,我们只要先在Windows“运行”对话框中输入“Regsvr32 /u mydocs.dll”这个命令,然后就可以彻底删除它们。

  44、禁止任务栏保存修改

  在日常的教学过程中,经常发现学生有意无意地修改任务栏的属性。造成下次上机时任务栏、时间图标等信息不能正常显示。通过对注册表的修改可以让系统对所作修改不进行保存,当重新启动后,系统自动恢复到原来的设置。

  单击“开始→运行”,键入“Regedit”后回车,打开注册表编辑器,依次展开[HKEY_CURRENT_USERsoftwareMicrosoftWindowscurrentversion  oliciesExplorer]分支,在右侧窗口中单击鼠标右键,选择“新建→DWORD值”命令,新建一个名为“nosavesettings”的DWORD值,并将其值设置为“1”即可。

  45、巧借Windows XP文件加速启动Windows 2000

  大家一定感觉Windows XP的启动速明显比2000的快很多,这是因为它对主要启动文件NTDETECT.COM和NFLDR(此文件没扩展名,两个文件都在系统分区根目录下)作了优化,我们只要在相应语言版本的Windows XP系统下复制这两个文件至Windows 2000系统分区根目录下覆盖原文件即可。

一、DLL文件常识

  DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下

  二、修改DLL文件的具体应用

  在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。

  三、系统中部分DLL文件的功能

  1、Browselc.dll IE所需要调用的库文件DLL结构雏形就是它了

  2、Shdoclc.dll 系统窗口及设置等,如删除文件、重命名

3、Shell32.dll 系统窗口及设置等,如删除文件、重命名

  4、Cryptui.dll IE控件下载及提示对话框程序

  四、修改DLL文件的方法

  1、下载DLL文件修改工具EXESCOPE6.0-6.3或6.4工具

  2、获取Browselc.dll、Shdoclc.dll、Shell32.dll和Cryptui.dll这几个链接文件。在找这几个文件时,最好将其他机器的硬盘,挂接在本机中,然后用本机的操作系统启动并复制这几个文件。

  3、在修改DLL文件的时候,打开该键值,在右面的对话框中将所要修改的键值禁用即可,不要删除,以备日后恢复

五、DLL文件修改秘籍

  1、禁止下载的修改方法:打开Shdoclc.dll修改资源–对话框—4416,将4416键值禁用即可。

  2、禁止网页添加到收藏夹,打开Shdoclc.dll修改资源–对话框—21400,将该键值禁用即可。

  3、禁止恶意网页加载控件,修改Cryptui.dll文件,要同时修改5个地方才能完全禁止 资源–对话框—130 资源–对话框—230 资源–对话框—4101 资源–对话框—4104 资源–对话框—4107 将以各对话框中的相应键值,修改成为禁用就可以了。

  4、禁止系统删除文件修改Shell32.dll,这个文件需要修改5个地方才可以禁止系统删除文件。资源–对话框—1011 资源–对话框—1012 资源–对话框—1013 资源–对话框—1021 资源–对话框—1022 将以上五个地址的键值禁用就可以了!

  5、禁止文件被改名,修改shell32.dll,有2个地方需要修改资源–对话框—1018 资源–对话框—1019 将以上两处的相应键值,修改为禁用就可以了!

  6、禁止运行菜单,修改shell32.dll,将资源–对话框—1018键值设置为禁用。

  7、禁止系统文件被挪动修改shell32.dll,需要修改4个地方 资源–对话框—1014 资源–对话框—1015 资源–对话框—1016 资源–对话框—1017

  8、禁止目标另存为,修改Shdoclc.dll文件,需要修改3个地方 资源–菜单–258—257 资源–菜单–258—252 资源–菜单–24641–2268 在这个修改中,我们要把各对应的键值删除。打开该键值后,右键菜单中有删除。在资源–菜单–24641—2268中,有多项该键值,请逐一删除。

  9、禁止自定义文件夹选项修改Shell32.dll文件,需要修改以下4个地方 资源–菜单–215—28719 资源–菜单–216—28719 资源–菜单–217—28719 资源–菜单–216—28719 找到以上四处键值,直接需要删除后即可,而不是禁用。

  10、禁止IE文件夹选项,修改Browselc.dll文件,需要修改3个键值 资源–菜单–263 (这里有多个请删除)—41251(删除) 资源–菜单–266(也有多个请删除)—41329 (删除) 资源–菜单–268—41251 (删除) 在上面的3个键值中,个别键值有多处,请逐一删除。

  11、禁止98文件共享控件,修改Msshrui.dll,需要修改2个地方 资源—对话框—- 1 — AutoRadioButton 资源—对话框—- 30 — AutoRadioButton 将以上两处的键值禁用即可。其他的选项,可以根据自己的需要进行修改。找到相应的功能键值,将不需要的功能,禁用就可以了。

  12、禁止文件的打开方式,修改Url.dll,需要修改2个地方 资源—对话框— 7000 资源—对话框— 7005 将以上两处的键值禁用即可。

  13、禁止更改系统桌面,修改Shdoc401.dll,有2处地方需要修改 资源—对话框— 29952— PushButton:浏览资源—对话框— 29952— PushButton:图案 将以上两处的键值禁用即可。

14、禁止系统文件夹自定义,修改Shd401lc.dll,有2处地方需要修改 资源—对话框— 29957 资源—对话框— 29958 将以上两处的键值禁用即可。

  15、禁止文件保存路径及打开,修改Comdlg32.dll,有2处地方需要修改 资源—对话框— 1547 资源—对话框— 1548 将以上两处的键值禁用即可。

  六、注意事项

  1、本文以Windows XP/2000操作系统的DLL文件修改为例,并不一定适用于Windows 98操作系统,请在修改DLL文件时注意。

  2、在禁止下载的操作中,除修改禁止下载的链接文件Shdoclc.dll外,还要修改禁止文件另存为的链接文件Shdoclc.dll。如果修改一个链接文件无法实现相应的功能,请查看其他链接文件中是否存在需要修改的键值。

  3、修改后的DLL链接文件,需要在DOS模式下导入并重新启动机器才有效。

  4、本文章只介绍了我们日常操作中经常用到的DLL修改选项,其他选项请参看DLL文件中的具体选项进行修改。

  5、在修改DLL文件前,请先备份系统原有的DLL文件,以备修改失败恢复.