优化随系统启动程序,实现其运行更趋于快速和稳定

来源:互联网 发布:阿里云 按流量计费 编辑:程序博客网 时间:2024/06/05 14:45

      面对高效率的工作状态,大多用户出于应用快捷、方便等考虑,将经常用到的应用程序设置为随系统启动,如将随机启动程序设置过多,不可避免地会造成计算机运行缓慢,设置会出现卡顿现象。有经验的用户可能会考虑到使用启动管理程序,例如StartupDelayer,让随系统启动程序分批,或者在计算机运行相对空闲时启动程序,最大限度地挖掘系统潜能。但又有没有更加快速稳定的方式运行随系统启动的应用程序,答案当然是肯定的。

    “几乎每一个操作系统都有一种在系统启动时刻启动进程机制,这些进程提供了一些不依赖与任何交互式用户的服务。在Windows中,这样的进程成为服务或者Windows服务,因为它们以来与WindowsAPI与系统进行交互”(内容摘自《深入解析Windows操作系统》「第4版」)。您联想到了什么,对,将随系统启动的程序转换成“Windows服务”,Windows服务是在单独进程中运行的,稳定运行是其优势之一,“在单独的进程中运行每一个服务,而不是在可能的情况下让多个服务共享一个进程”(内容摘自《深入解析Windows操作系统》「第4版」),从而实现随系统程序更趋于稳定与快速。

将一个应用程序转换成一个Windows服务,用户需要修改其启动代码才能得以实现,作为一个普通的计算机用户根本不可能做到这些。在WindowsResource Kit Tools工具箱中的SrvAny工具,可以帮助用户实现这些。SrvAny工具是注册这样程序的服务外壳。怎么样才能说服读者呢。

     “SrvAny服务没有共享进程的Type值,所以,每一个你安装成通过SrvAny来做服务运行的应用程序都运行在单独的进程中,它们分别是SrvAny宿主程序的不同实例”(内容摘自《深入解析Windows操作系统》「第4版」)。用户可以通过它让我们的注册程序的服务外壳,帮助用户轻松将任何一个应用程序转换成一个Windows服务来运行,并实现其程序以SYSTEM账户启动。

      具体操作步骤如下:

      用户在确定某个应用程序做为Windows服务启动运行前,应首先将Srvany.exe安装为Windows服务。首先在正规网站下载WindowsResource Kit Tools,安装操作非常简单,遵循程序安装过程中的默认设置,依次点击“Next”按钮即可完成安装。依据C:\ProgramFiles\Windows Resource Kits\Tools,将Tools文件中的srvany.exe和instsrv.exe拷贝到C:\Windows\System32\下,然后对所选择的应用程序完成转换为Windows服务的激活工作,度依次点击“开始”按钮→所有程序→附件,打开“命令提示符”,在“命令提示符”下键入“instsrvServiceName C:\Windows\System32\srvany.exe”,ServiceName即自定义的服务名称,建议设置为该应用程序的名称或简写。

下面以设置搜索工具Everything为例,首先将上述ServiceName改为Everything便于用户明确区分。

       完成应用程序的服务激活工作后,下面配置Everything服务的运行参数,具体为服务运行的程序地址、所在文件夹路径及程序启动所需要的参数。依次点击“开始”菜单→运行,在“运行”对话框中的文本框里键入“regedit”,调出“注册表”编辑器,,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Everything(自定义服务名称),若该服务下没有Parameters项目,则需要新建该项,点选Everything,在右窗格空白处,右击鼠标,在弹出的菜单中,依次点选“新建→项”,对该项进行重命名工作即可,然后定位到Parameters项目,在右窗格中分别新建以下几个字符串值。AppDirectory值为D:\ProgramFiles\Everything(服务运行的程序地址);Application 值为D:\ProgramFiles\Everything\Everything.exe(服务运行的程序所在文件夹路径); AppParameters 值为无(服务运行的程序启动所需要的参数)。

       最后依次点击“开始”按钮→控制面板→管理工具→服务,即可打开服务控制管理器,双击刚刚建立服务项目Everything,在弹出的“Everything的属性(本地计算机)”对话框中,将“启动类型”设置为“自动”,然后在该服务属性窗口中点击切换到“登录”选项卡,勾选“允许服务与桌面交互”复选框,经过该操作后,应用程序在通知栏可正常显示,该操作仅仅适用于WindowsXP和2003版本。

请注意,SrvAny工具只是注册其程序的服务外壳。怎样才能证明这些呢。打开“注册表”编辑器,依次定位到HKET_MACHINE\SYSTEM\CurrentControlSet\Services\Everything,在右窗格里,ImagePath字符串,该值的名称是:服务或驱动程序执行文件的路径,并且该键值的数值数据标注着Srvany工具的文件路径。

       笔者推荐使用SrvAny工具,改善应用程序在自启方面存在不同程度上的缺陷。例如内存优化程序CleanMem,由于CleanMem在随系统启动机制存在不足,将其设置为Windows服务,实现和Windows有效整合,优化的方式启动。

用服务控制器(简称SCM)启动程序

       将应用程序作为Windows来启动,其独特优势在于独立、稳定,不必担心因共享同一个进程中的程序出现问题或不稳定导致一连串的“锁死”现象。

       以启动Everything为例,依次点选“开始”按钮→“运行”,在“运行”对话框下的文本框中键入“services.msc”,在弹出的“服务控制器”窗口,双击要启动的程序,前提条件下需要在“启动类型”上修改为“手动”,在“服务状态”按钮区域中,点击“启动”按钮,即可完成SYSTEM账户启动程序工作。“用户名称为SYSTEM的进程优先级,这表明这个进程当前被内核所使用”(内容摘自《WindowsXP Professional 使用与开发》)。

该文章无法涉及到图片内容,敬请谅解,如有需可去百度文库进行下载(http://wenku.baidu.com/view/f583336958fafab069dc02a1.html),同时谢谢您对《Win_简约》的支持!


原创粉丝点击