安装低版本的R语言、和自行下载安装各个版本的R语言包、以及多环境运行R

1. 下载并安装最新的R版本软件,以国内的清华的镜像为例(国内镜像速度快)

https://mirrors.tuna.tsinghua.edu.cn/CRAN/

2. 官网上如何下载老版本或低版本(旧版本)的R语言(同时下载多个版本的R,功能运行更加丰富)

https://cran.r-project.org/bin/windows/base/old/

3. 官网上如何去自行下载安装各个版本的R语言包(当运行install.packages()不行时)

https://cran.r-project.org/bin/windows/contrib/

4. 如何在Rstudio多个版本R语言环境进行选择(当要运行低版本R的包时)

打开RStudio —> 点击Tools —> Global Options —> General —> R version —> Change 具体如下

 

  • 28
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Radmin自动登陆器 v3.0 - By: [email protected] 20150615 By: [email protected] , http://dep.yibinu.cn/wgzxnew/ 1、程序功能和使用环境介绍 2、程序操作方法介绍 3、登录信息文件RadminM.txt介绍 4、登录信息文件RadminM.txt的转换和编制 5、v3.0版新增解锁远程桌面功能 6、相关配置和多种语言支持介绍 7、免责申明 1、程序功能和使用环境介绍 (1)、程序功能 为了安全高效地使用Radmin Viewer来自动登录和管理多台服务器,故编制RadminM (Radmin Connection Manager,Radmin自动登录器)。 v3.0版的可执行文件是RadminM.exe,一台电脑只能运行一个实例,再次运行只是将已运行的实例调到前台。v3.0版之前的老版本的可执行文件是RadminM2.exe。 新版的功能已经比较完善,基本上可以代替Radmin Viewer 3.5进行管理(除Intel AMT功能外),另外还增加了一些实用功能,支持Windows Xp、Vista、Win7、Win8、2003、2000、9x及相应Windows Server版等操作系统。 (2)、程序使用环境要求 使用前请将Radmin Viewer 3.5的Radmin.exe文件直接拷贝到该目录中,其它Radmin Viewer 3.x版本也可以,中文版、英文版均可; 请设置防火墙允许Radmin.exe和RadminM.exe(仅扫描功能用)访问网络; 若要用到聊天、语音聊天、传送信息等连接模式,必须将相应的8个dll文件也拷贝到该目录中:ChatLPCx.dll、raudiox.dll、rchatx.dll、unicows.dll、vcintcx.dll、vcintsx.dll、voicex.dll、WinLpcDl.dll。 (3)、Radmin Server使用权限设置(新版本可选) 注意:在v1.5及以前的老版本中,Radmin Server被控端必须将“使用权限...”(Permissions)设置为“Windows NT 安全性”(Security),如果设置为“Radmin安全性”(Security)将不能实现自动登录功能。在新版本中,这两种安全性模式下,都可以实现自动登录功能。 (4)、开发环境 v1.5及以前的老版本用AutoIt语言开发,AutoIt是解释性语言,功能和稳定性有限,并且一些防病毒软件会报警。 为了在功能和稳定性方面进一步提高和改进,v2.0版使用VC++ Unicode(MFC)编程,程序在编译时已经集成了VC运行库,可独立运行。 由于MFC越益臃肿笨重,为了提高稳定性和效率,v3.0版使用WTL VC++ Unicode编程,程序短小精悍、可独立运行。WTL是Windows Template Library,可参见 http://wtl.sourceforge.net/ 。 2、程序操作方法介绍 (1)、程序中的鼠标操作 * 双击某条记录以默认模式自动连接(等待6秒);若该记录含私有代理将自动进行代理连接(代理登录和目标登录各等待6秒); * 左上角的选择框或主菜单都可以选择默认连接模式; * 先右击某条记录(或F9)填为强制代理(支持域名),并选中强制代理选项,便可对另一条记录强制进行代理连接(将忽略私有代理); * 支持鼠标滚轮; * 主菜单和右键菜单均可完成本程序的常规操作;记录窗格的右键菜单或单击工具栏的相应按钮可直接选择进行指定模式的连接(将忽略默认连接模式); * 主菜单中的“配置”菜单可以选择程序的各项相关配置; * 工具栏各个按钮的功能均有提示; * 单击工具栏上的“显示隐藏树状目录”按钮可以显示隐藏目录树窗格,目录树窗格的右键菜单可完成目录树的一些常规操作; * 单击工具栏上的“选择切换图标查看模式”按钮可以切换或选择记录窗格的图标查看模式; * 记录窗格和目录树窗格都支持鼠标拖放功能,强烈建议用户使用该功能前备份RadminM.txt,以免损坏或丢失数据;直接鼠标拖放为移动,Ctrl+鼠标拖放为复制。拖放时状态栏有提示信息; * 程序启动时,记录自动按记录名称升序排列;在记录窗格单击列表框某列表头,可以按该列进行记录排序,再次单击可以反向排序。 (2)、程序中的常用快捷键 * Enter :以默认模式连接记录; * Insert :新建记录; * Ctrl+e :编辑记录; * Ctrl+c
一、Qt Creator 的安装和hello world 程序的编写(原创) 1.首先到Qt 的官方网站上下载Qt Creator,这里我们下载windows 版的。 下载地址:http://qt.nokia.com/downloads 如下图我们下载:Download Qt SDK for Windows* (178Mb) 下载完成后,直接安装即可,安装过程中按默认设置即可。 2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示 程序。 3.我们用File->New 菜单来新建工程。 4.这里我们选择Qt4 Gui Application。 5.下面输入工程名和要保存到的文件夹路径。我们这里的工程名为helloworld。 6.这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以 直接点击Next。 7.我们将base class 选为QDialog 对话框类。然后点击Next。 8.点击Finish,完成工程的建立。 9.我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的 绿色的run 按钮或者按下Ctrl+R 快捷键运行程序。 10.程序运行会出现空白的对话框,如下图。 11.我们双击文件列表的dialog.ui 文件,便出现了下面所示的图形界面编辑界 面。 12.我们在右边的器件栏里找到Label 标签器件 13.按着鼠标左键将其拖到设计窗口上,如下图。 14.我们双击它,并将其内容改为helloworld。 15.我们在右下角的属性栏里将字体大小由9 改为15。 16.我们拖动标签一角的蓝点,将全部文字显示出来。 17.再次按下运行按钮,便会出现helloworld。 到这里helloworld 程序便完成了。 Qt Creator 编译的程序,在其工程文件夹下会有一个debug 文件夹,其中有程序的.exe 可执行文件。但Qt Creator 默认是用动态链接的, 就是可执行程序在运行时需要相应的.dll 文件。我们点击生成的.exe 文件,首 先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装 应用程序可能会修复此问题。”表示缺少mingwm10.dll 文件。 解决这个问题我们可以将相应的.dll 文件放到系统 中。在Qt Creator 的安装目录的qt 文件下的bin 文件夹下(我安装在了D 盘, 所以路径是D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll 文件。在这里 找到mingwm10.dll 文件,将其复制到C:\WINDOWS\system 文件夹下,即可。下 面再提示缺少什么dll 文件,都像这样解决就可以了。 二、Qt Creator 编写多窗口程序(原创) 实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直 接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后, 我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 实现原理: 程序里我们先建立一个主工程,作为主界面,然后再建立一个对 话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。 实现过程: 1.首先新建Qt4 Gui Application 工程,工程名为nGui,Base class 选为QWidget。 建立好后工程文件列表如下图。 2.新建对话框类,如下图,在新建中,选择Qt Designer Form Class。 3.选择Dialog without Buttons。 4.类名设为myDlg。 5.点击Finish 完成。注意这里已经默认将其加入到了我们刚建的工程中了。 6.如下图,在mydlg.ui 中拖入一个Push Button,将其上的文本改为“进入主 窗口”,在其属性窗口中将其objectName 改为enterBtn,在下面的Signals and slots editor 中进行信号和槽的关联,其中,Sender 设为enterBtn,Signal 设为clicked(),Receive 设为myDlg,Slot 设为accept()。这样就实现了单击 这个按钮使这个对话框关闭并发出Accepted 信号的功能。下面我们将利用这个 信号。 7.修改主函数main.cpp,如下: #include <QtGui/QApplication> #include "widget.h" #include "mydlg.h" //加入头文件 int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; myDlg my1; //建立自己新建的类的对象my1 if(my1.exec()==QDialog::Accepted) //利用Accepted 信号判 断enterBtn 是否被按下 { w.show(); //如果被按下,显示主窗口 return a.exec(); //程序一直执行,直到主窗口 关闭 } else return 0; //如果没被按下,则不会进入主窗口,整个程 序结束运行 } 主函数必须这么写,才能完成所要的功能。 如果主函数写成下面这样: #include <QtGui/QApplication> #include "widget.h" #include "mydlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); myDlg my1; if(my1.exec()==QDialog::Accepted) { Widget w; w.show(); } return a.exec(); } 这样,因为w 是在if 语句里定义的,所以当if 语句执行完后它就无效了。这样 导致的后果就是,按下enterBtn 后,主界面窗口一闪就没了。如果此时对程序 改动了,再次点击运行时,就会出现error: collect2: ld returned 1 exit status 的错误。这是因为虽然主窗口没有显示,但它只是隐藏了,程序并没有 结束,而是在后台运行。所以这时改动程序,再运行时便会出错。你可以按下调 试栏上面的红色Stop 停止按钮来停止程序运行。你也可以在windows 任务管理 器的进程中将该进程结束,而后再次运行就没问题了,当然先关闭Qt Creator, 而后再重新打开,这样也能解决问题。 如果把程序改为这样: #include <QtGui/QApplication> #include "widget.h" #include "mydlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); myDlg my1; Widget w; if(my1.exec()==QDialog::Accepted) { w.show(); } return a.exec(); } 这样虽然解决了上面主窗口一闪而过的问题,但是,如果在my1 对话框出现的时 候不点enterBtn,而是直接关闭对话框,那么此时整个程序应该结束执行,但 是事实是这样的吗?如果你此时对程序进行了改动,再次按下run 按钮,你会发 现又出现了error: collect2: ld returned 1 exit status 的错误,这说明程 序并没有结束,我们可以打开windows 任务管理器,可以看到我们的程序仍在执 行。 因为return a.exec();一句表示只要主窗口界面不退出,那么程 序就会一直执行。所以只有用第一种方法,将该语句也放到if 语句中,而在else 语句中用else return 0; ,这样如果enterBtn 没有被按下,那么程序就会结 束执行了。 到这里,我们就实现了一个界面结束执行,然后弹出另一个 界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。 8.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠 标右键,在弹出的菜单中选择go to slot。 9.我们选择单击事件clicked()。 10.我们在弹出的槽函数中添加一句: my2.show(); my2 为我们新建对话框类的另一个对象,但是my2 我们还没有定义,所以 在widget.h 文件中添加相应代码,如下,先加入头文件,再加入my2 的定义语 句,这里我们将其放到private 里,因为一般的函数都放在public 里,而变量 都放在private 里。 #ifndef WIDGET_H #define WIDGET_H #include <QtGui/QWidget> #include "mydlg.h" //含头文件 namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; myDlg my2; //对my2 进行定义 private slots: void on_pushButton_clicked(); }; #endif // WIDGET_H 到这里,再运行程序,便能完成我们实验要求的功能了。整个程序里,我们用两 种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关 联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身消失而 后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的 方法是不同的。 三、Qt Creator 登录对话框(原创) 实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则 进入主窗口,如果有错则弹出警告对话框。 实现原理: 通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以用 if 语句进行判断。 实现过程: 1.先新建Qt4 Gui Application 工程,工程名为mainWidget,选用QWidget 作 为Base class,这样便建立了主窗口。文件列表如下: 2.然后新建一个Qt Designer Form Class 类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下: 3.在logindlg.ui 中设计下面的界面:行输入框为Line Edit。其中用户名后面 的输入框在属性中设置其object Name 为usrLineEdit,密码后面的输入框为 pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。 4.将exitBtn 的单击后效果设为退出程序,关联如下: 5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽 函数,写入一句 void loginDlg::on_loginBtn_clicked() { accept(); } 6.改写main.cpp: #include <QtGui/QApplication> #include "widget.h" #include "logindlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; loginDlg login; if(login.exec()==QDialog::Accepted) { w.show(); return a.exec(); } else return 0; } 7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。 8.添加用户名密码判断功能。将登陆按钮的槽函数改为: void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text()==tr("qt")&&m_ui->pwdLineEdit->text()==tr ("123456")) //判断用户名和密码是否正确 accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); //如果不正确,弹出警告对话框 } } 并在logindlg.cpp 中加入#include <QtGui>的头文件。如果不加这个头文件, QMessageBox 类不可用。 9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主 窗口了,如果输入错了,就会弹出警告对话框。 如果输入错误,便会弹出警告提示框: 10.在logindlg.cpp 的loginDlg 类构造函数里,添上初始化语句,使密码显示 为小黑点。 loginDlg::loginDlg(QWidget *parent) : QDialog(parent), m_ui(new Ui::loginDlg) { m_ui->setupUi(this); m_ui->pwdLineEdit->setEchoMode(QLineEdit::Password); } 效果如下: 11.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序 按错误的用户名对待了。 我们可以更改if 判断语句,使这样的输入也算正确。 void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit-> text()==tr("123456")) accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); } } 加入的这个函数的作用就是移除字符串开头和结尾的空白字符。 12.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和 密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽 函数如下: void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit-> text()==tr("123456")) //判断用户名和密码是否正确 accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); //如果不正确,弹出警告对话框 m_ui->usrLineEdit->clear();//清空用户名输入框 m_ui->pwdLineEdit->clear();//清空密码输入框 m_ui->usrLineEdit->setFocus();//将光标转到用户名输入框 } } 四、Qt Creator 添加菜单图标(原创) 在下面的几节,我们讲述Qt 的MainWindow 主窗口部件。这一节只讲述怎样在其 上的菜单栏里添加菜单和图标。 1.新建Qt4 Gui Application 工程,将工程命名为MainWindow,其他选项默认 即可。 生成的窗口界面如下图。其中最上面的为菜单栏。 2.我们在Type Here 那里双击,并输入“文件(&F)”,这样便可将其文件菜单的 快捷键设为Alt+F。(注意括号最好用英文半角输入,这样看着美观) 3.输入完按下Enter 键确认即可,然后在子菜单中加入“新建(&N)”,确定后, 效果如下图。 4.我们在下面的动作编辑窗口可以看到新加的“新建”菜单。 5.双击这一条,可打开它的编辑对话框。我们看到Icon 项,这里可以更改“新 建”菜单的图标。 6.我们点击后面的...号,进入资源选择器,但现在这里面是空的。所以下面我 们需要给该工程添加外部资源。 7.添加资源有两种方法。一种是直接添加系统提供的资源文件,然后选择所需图 标。另一种是自己写资源文件。我们主要介绍第一种。新建Qt Resources file, 将它命名为menu。其他默认。 8.添加完后如下图。可以看到添加的文件为menu.qrc。 9.我们最好先在工程文件夹里新建一个文件夹,如images,然后将需要的图标 文件放到其中。 10.在Qt Creator 的menu.qrc 文件中,我们点击Add 下拉框,选择Add Prefix。 我们可以将生成的/new/prefix 前缀改为其他名字,如/File。 11.然后再选择Add 下拉框,选择Add Files。再弹出的对话框中,我们到新建 的images 文件夹下,将里面的图标文件全部添加过来。 12.添加完成后,我们在Qt Creator 的File 菜单里选择Save All 选项,保存所 做的更改。 13.这时再打开资源选择器,可以看到我们的图标都在这里了。(注意:如果不显 示,可以按一下上面的Reload 按钮) 14.我们将new.png 作为“新建”菜单的图标,然后点击Shortcut,并按下 Crtl+N,便能将Crtl+N 作为“新建”菜单的快捷键。 15.这时打开文件菜单,可以看到“新建”菜单已经有图标了。 运行程序后效果如下。 16.我们在工程文件夹下查看建立的menu.qrc 文件,可以用写字板将它打开。 其具体内容如下。 附:第二种添加资源文件的方法。 1.首先右击工程文件夹,在弹出的菜单中选择Add New,添加新文件。也可以用 File 中的添加新文件。 2.我们选择文本文件。 3.将文件名设置为menu.qrc。 4.添加好文件后将其内容修改如下。可以看到就是用第一种方法生成的 menu.qrc 文件的内容。 5.保存文件后,在资源管理器中可以看到添加的图标文件。 五、Qt Creator 布局管理器的使用(原创) 上篇讲解了如何在Qt Creator 中添加资源文件,并且为菜单添加了图标。这次 我们先对那个界面进行一些完善,然后讲解一些布局管理器的知识。 首先对菜单进行完善。 1.我们在上一次的基础上再加入一些常用菜单。 “文件”的子菜单如下图。中间的分割线可以点击Add Separator 添加。 “编辑”子菜单的内容如下。 “帮助”子菜单的内容如下。 2.我们在动作编辑器中对各个菜单的属性进行设置。 如下图。 3.我们拖动“新建”菜单的图标,将其放到工具栏里。 拖动“新建”菜单的图标。 将其放到菜单栏下面的工具栏里。 4.我们再添加其他几个图标。使用Append Separator 可以添加分割线。 5.最终效果如下。如果需要删除图标,可以在图标上点击右键选择Remove action 即可。 下面简述一下布局管理器。 (这里主要以垂直布局管理器进行讲解,其他类型管理器用法与之相同,其效 果可自己验证。) 1.在左边的器件栏里拖入三个PushButton 和一个Vertical Layout(垂直布局 管理器)到中心面板。如下图。 2.将这三个按钮放入垂直布局管理器,效果如下。可以看到按钮垂直方向排列, 并且宽度可以改变,但高度没有改变。 3.我们将布局管理器整体选中,按下上面工具栏的Break Layout 按钮,便可取 消布局管理器。(我们当然也可以先将按钮移出,再按下Delete 键将布局管理 器删除。) 4.下面我们改用分裂器部件(QSplitter)。 先将三个按钮同时选中,再按下上面工具栏的Lay Out Vertically in Splitter (垂直分裂器)。 效果如下图。可以看到按钮的大小可以随之改动。这也就是分裂器和布局管理器 的分别。 5.其实布局管理器不但能控制器件的布局,还有个很重要的用途是,它能使器件 的大小随着窗口大小的改变而改变。 我们先在主窗口的中心拖入一个文本编辑器Text Edit。 这时直接运行程序,效果如下。可以看到它的大小和位置不会随着窗口改变。 下面我们选中主窗口部件,然后在空白处点击鼠标右键,选择Layout->Lay Out in a Grid,使整个主窗口的中心区处于网格布局管理器中。 可以看到,这时文本编辑器已经占据了整个主窗口的中心区。 运行一下程序,可以看到无论怎样拉伸窗口,文本编辑框的大小都会随之改变。 我们在这里一共讲述了三种使用布局管理器的方法,一种是去器件栏添加,一 种是用工具栏的快捷图标,还有一种是使用鼠标右键的选项。 程序中用到的图标是我从Ubuntu 中复制的,可以到 http://www.qtcn.org/bbs/read.php?tid=23252&page=1&toread=1 下载到。 六、Qt Creator 实现文本编辑(原创) 前面已经将界面做好了,这里我们为其添加代码,实现文本编辑的功能。 首先实现新建文件,文件保存,和文件另存为的功能。 (我们先将上次的工程文件夹进行备份,然后再对其进行修改。在写较大的程序 时,经常对源文件进行备份,是个很好的习惯。) 在开始正式写程序之前,我们先要考虑一下整个流程。因为我们要写记事本一 样的软件,所以最好先打开windows 中的记事本,进行一些简单的操作,然后 考虑怎样去实现这些功能。再者,再强大的软件,它的功能也是一个一个加上 去的,不要设想一下子写出所有的功能。我们这里先实现新建文件,保存文件, 和文件另存为三个功能,是因为它们联系很紧,而且这三个功能总的代码量也 不是很大。 因为三个功能之间的关系并不复杂,所以我们这里便不再画流程图,而只是简 单描述一下。 新建文件,那么如果有正在编辑的文件,是否需要保存呢? 如果需要进行保存,那这个文件以前保存过吗?如果没有保存过,就应该先将其 另存为。 下面开始按这些关系写程序。 1.打开Qt Creator,在File 菜单中选择Open,然后在工程文件夹中打开 MainWindow.pro 工程文件。 先在main.cpp 文件中加入以下语句,让程序中可以使用中文。 在其中加入#include <QTextCodec> 头文件含,再在主函数中加入下面一行: QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 这样在程序中使用中文,便能在运行时显示出来了。更改后文件如下图。 2.在mainwindow.h 文件中的private 下加入以下语句。 bool isSaved; //为true 时标志文件已经保存,为false 时标志文件尚未保存 QString curFile; //保存当前文件的文件名 void do_file_New(); //新建文件 void do_file_SaveOrNot(); //修改过的文件是否保存 void do_file_Save(); //保存文件 void do_file_SaveAs(); //文件另存为 bool saveFile(const QString& fileName); //存储文件 这些是变量和函数的声明。其中isSaved 变量起到标志的作用,用它来标志文件 是否被保存过。然后我们再在相应的源文件里进行这些函数的定义。 3.在mainwindow.cpp 中先加入头文件#include <QtGui>,然后在构造函数里添 加以下几行代码。 isSaved = false; //初始化文件为未保存过状态 curFile = tr("未命名.txt"); //初始化文件名为“未命名.txt” setWindowTitle(curFile); //初始化主窗口的标题 这是对主窗口进行初始化。效果如下。 4.然后添加“新建”操作的函数定义。 void MainWindow::do_file_New() //实现新建文件的功能 { do_file_SaveOrNot(); isSaved = false; curFile = tr("未命名.txt"); setWindowTitle(curFile); ui->textEdit->clear(); //清空文本编辑器 ui->textEdit->setVisible(true); //文本编辑器可见 } 新建文件,先要判断正在编辑的文件是否需要保存。然后将新建的文件标志为未 保存过状态。 5.再添加do_file_SaveOrNot 函数的定义。 void MainWindow::do_file_SaveOrNot() //弹出是否保存文件对话框 { if(ui->textEdit->document()->isModified()) //如果文件被更改过,弹出保 存对话框 { QMessageBox box; box.setWindowTitle(tr("警告")); box.setIcon(QMessageBox::Warning); box.setText(curFile + tr(" 尚未保存,是否保存?")); box.setStandardButtons(QMessageBox::Yes | QMessageBox::No); if(box.exec() == QMessageBox::Yes) //如果选择保存文件,则执行保存操作 do_file_Save(); } } 这个函数实现弹出一个对话框,询问是否保存正在编辑的文件。 6.再添加“保存”操作的函数定义。 void MainWindow::do_file_Save() //保存文件 { if(isSaved){ //如果文件已经被保存过,直接保存文件 saveFile(curFile); } else{ do_file_SaveAs(); //如果文件是第一次保存,那么调用另存为 } } 对文件进行保存时,先判断其是否已经被保存过,如果没有被保存过,就要先对 其进行另存为操作。 7.下面是“另存为”操作的函数定义。 void MainWindow::do_file_SaveAs() //文件另存为 { QString fileName = QFileDialog::getSaveFileName(this,tr("另存为 "),curFile); //获得文件名 if(!fileName.isEmpty()) //如果文件名不为空,则保存文件内容 { saveFile(fileName); } } 这里弹出一个文件对话框,显示文件另存为的路径。 8.下面是实际文件存储操作的函数定义。 bool MainWindow::saveFile(const QString& fileName) //保存文件内容,因为可能保存失败,所以具有返回值,来表明是否保存成功 { QFile file(fileName); if(!file.open(QFile::WriteOnly | QFile::Text)) //以只写方式打开文件,如果打开失败则弹出提示框并返回 { QMessageBox::warning(this,tr("保存文件"), tr("无法保存文件 %1:\n %2").arg(fileName) .arg(file.errorString())); return false; } //%1,%2 表示后面的两个arg 参数的值 QTextStream out(&file); //新建流对象,指向选定的文件 out << ui->textEdit->toPlainText(); //将文本编辑器里的内容以纯文本 的形式输出到流对象中 isSaved = true; curFile = QFileInfo(fileName).canonicalFilePath(); //获得文件的标准路 径 setWindowTitle(curFile); //将窗口名称改为现在窗口的路径 return true; } 这个函数实现将文本文件进行存储。下面我们对其中的一些代码进行讲解。 QFile file(fileName);一句,定义了一个QFile 类的对象file,其中filename 表明这个文件就是我们保存的的文件。然后我们就可以用file 代替这个文件, 来进行一些操作。Qt 中文件的操作和C,C++很相似。对于QFile 类对象怎么使 用,我们可以查看帮助。 点击Qt Creator 最左侧的Help,在其中输入QFile, 在搜索到的列表中选择QFile 即可。这时在右侧会显示出QFile 类中所有相关信 息以及他们的用法和说明。 // 我们往下拉,会发现下面有关于怎么读取文件的示例代码。 // // 再往下便能看到用QTextStream 类对象,进行字符串输入的例子。下面也提到了 QFileInfo 和QDir 等相关的类,我们可以点击它们去看一下具体的使用说明。 // 上面只是做了一个简单的说明。以后我们对自己不明白的类都可以去帮助里进行 查找,这也许是我们以后要做的最多的一件事了。对于其中的英文解释,我们最 好想办法弄明白它的大意,其实网上也有一些中文的翻译,但最好还是从一开始 就尝试着看英文原版的帮助,这样以后才不会对中文翻译产生依赖。 我们这次只是很简单的说明了一下怎样使用帮助文件,这不表明 它不重要,而是因为这里不可能将每个类的帮助都解释一遍,没有那么多时间, 也没有那么大的篇幅。而更重要的是因为,我们这个教程只是引你入门,所以很 多东西需要自己去尝试。 在以后的教程里,如果不是特殊情况,就不会再对其中的类进行 详细解释,文章中的重点是对整个程序的描述,其中不明白的类,自己查看帮助。 9.双击mainwindow.ui 文件,在图形界面窗口下面的Action Editor 动作编辑 器里,我们右击“新建”菜单一条,选择Go to slot,然后选择triggered(), 进入其触发事件槽函数。 同理,进入其他两个菜单的槽函数,将相应的操作的函数写入槽函数中。如下。 void MainWindow::on_action_New_triggered() //信号和槽的关联 { do_file_New(); } void MainWindow::on_action_Save_triggered() { do_file_Save(); } void MainWindow::on_action_SaveAs_triggered() { do_file_SaveAs(); } 这时点击运行,就能够实现新建文件,保存文件,文件另存为的功能了。 然后实现打开,关闭,退出,撤销,复制,剪切,粘贴的功能。 先备份上次的工程文件,然后再将其打开。 1.先在mainwindow.h 文件中加入函数的声明。 void do_file_Open(); //打开文件 bool do_file_Load(const QString& fileName); //读取文件 2.再在mainwindow.cpp 文件中写函数的功能实现。 void MainWindow::do_file_Open()//打开文件 { do_file_SaveOrNot();//是否需要保存现有文件 QString fileName = QFileDialog::getOpenFileName(this); //获得要打开的文件的名字 if(!fileName.isEmpty())//如果文件名不为空 { do_file_Load(fileName); } ui->textEdit->setVisible(true);//文本编辑器可见 } bool MainWindow::do_file_Load(const QString& fileName) //读取文件 { QFile file(fileName); if(!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件 %1:\n%2.").arg(fileName).arg(file.errorString())); return false; //如果打开文件失败,弹出对话框,并返回 } QTextStream in(&file); ui->textEdit->setText(in.readAll()); //将文件中的所有内容都 写到文本编辑器中 curFile = QFileInfo(fileName).canonicalFilePath(); setWindowTitle(curFile); return true; } 上面的打开文件函数与文件另存为函数相似,读取文件的函数与文件存储函数相 似。 3.然后按顺序加入更菜单的关联函数,如下。 void MainWindow::on_action_Open_triggered() //打开操作 { do_file_Open(); } // void MainWindow::on_action_Close_triggered() //关闭操作 { do_file_SaveOrNot(); ui->textEdit->setVisible(false); } // void MainWindow::on_action_Quit_triggered() //退出操作 { on_action_Close_triggered(); //先执行关闭操作 qApp->quit(); //再退出系统,qApp 是指向应用程序的全局指针 } // void MainWindow::on_action_Undo_triggered() //撤销操作 { ui->textEdit->undo(); } // void MainWindow::on_action_Cut_triggered() //剪切操作 { ui->textEdit->cut(); } // void MainWindow::on_action_Copy_triggered() //复制操作 { ui->textEdit->copy(); } // void MainWindow::on_action_Past_triggered() //粘贴操作 { ui->textEdit->paste(); } 因为复制,撤销,全选,粘贴,剪切等功能,是TextEdit 默认就有的,所以我 们只需调用一下相应函数就行。 到这里,除了查找和帮助两个菜单的功能没有加上以外,其他功能都已经实现了。 七、Qt Creator 实现文本查找(原创) 现在加上查找菜单的功能。因为这里要涉及关于Qt Creator 的很多实用功能, 所以单独用一篇文章来介绍。 以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框。对于 怎么实现查找功能的,我们详细地分步说明了怎么进行类中方法的查找和使用。 其中也将Qt Creator 智能化的代码补全功能和程序中函数的声明位置和定义位 置间的快速切换进行了介绍。 1.首先还是保存以前的工程,然后再将其打开。 我们发现Qt Creator 默认的字体有点小,可以按下Ctrl 键的同时按两下+键, 来放大字体。也可以选择Edit->Advanced->Increase Font Size。 2.在mainwindow.h 中加入#include <QLineEdit>的头文件含,在private 中 添加 QLineEdit *find_textLineEdit; //声明一个行编辑器,用于输入要查找的内容 在private slots 中添加 void show_findText(); 在该函数中实现查找字符串的功能。 3.我们进入查找菜单的触发事件槽函数,更改如下。 void MainWindow::on_action_Find_triggered() { QDialog *findDlg = new QDialog(this); //新建一个对话框,用于查找操作,this 表明它的父窗口是MainWindow。 findDlg->setWindowTitle(tr("查找")); //设置对话框的标题 find_textLineEdit = new QLineEdit(findDlg); //将行编辑器加入到新建的查找对话框中 QPushButton *find_Btn = new QPushButton(tr("查找下一个"),findDlg); //加入一个“查找下一个”的按钮 QVBoxLayout* layout = new QVBoxLayout(findDlg); layout->addWidget(find_textLineEdit); layout->addWidget(find_Btn); //新建一个垂直布局管理器,并将行编辑器和按钮加入其中 findDlg ->show(); //显示对话框 connect(find_Btn,SIGNAL(clicked()),this,SLOT(show_findText())); //设置“查找下一个”按钮的单击事件和其槽函数的关联 } 这里我们直接用代码生成了一个对话框,其中一个行编辑器可以输入要查找的字 符,一个按钮可以进行查找操作。我们将这两个部件放到了一个垂直布局管理器 中。然后显示这个对话框。并设置了那个按钮单击事件与show_findText()函数 的关联。 5.下面我们开始写实现查找功能的show_findText()函数。 void MainWindow::show_findText()//“查找下一个”按钮的槽函数 { QString findText = find_textLineEdit->text(); //获取行编辑器中的内容 } 先用一个QString 类的对象获得要查找的字符。然后我们一步一步写查找操作的 语句。 6.在下一行写下ui,然后直接按下键盘上的“<.”键,这时系统会根据是否是 指针对象而自动生成“->”或“.”,因为ui 是指针对象,所以自动生成“->” 号,而且弹出了ui 中的所有部件名称的列表。如下图。 7.我们用向下的方向键选中列表中的textEdit。或者我们可以先输入text,这 时能缩减列表的内容。 8.如上图我们将鼠标放到textEdit 上,这时便出现了textEdit 的类名信息, 且后面出现一个F1 按键。我们按下键盘上的F1,便能出现textEdit 的帮助。 9.我们在帮助中向下拉,会发现这里有一个find 函数。 10.我们点击find,查看其详细说明。 11.可以看到find 函数可以实现文本编辑器中字符串的查找。其中有一个 FindFlags 的参数,我们点击它查看其说明。 12.可以看到它是一个枚举变量(enum),有三个选项,第一项是向后查找(即 查找光标以前的内容,这里的前后是相对的说法,比如第一行已经用完了,光 标在第二行时,把第一行叫做向后。),第二项是区分大小写查找,第三项是 查找全部。 13.我们选用第一项,然后写出下面的语句。 ui->textEdit->find(findText,QTextDocument::FindBackward); //将行编辑器中的内容在文本编辑器中进行查找 当我们刚打出“f”时,就能自动弹出textEdit 类的相关属性和方法。 可以看到,当写完函数名和第一个“(”后,系统会自动显示出该函数的函数原 型,这样可以使我们减少出错。 14.这时已经能实现查找的功能了。但是我们刚才看到find 的返回值类型是bool 型,而且,我们也应该为查找不到字符串作出提示。 if(!ui->textEdit->find(findText,QTextDocument::FindBackward)) { QMessageBox::warning(this,tr("查找"),tr("找不到 %1") .arg(findText); } 因为查找失败返回值是false,所以if 条件加了“!”号。在找不到时弹出警 告对话框。 15.到这里,查找功能就基本上写完了。show_findText()函数的内容如下。 我们会发现随着程序功能的增强,其中的函数也会越来越多,我们都会为查找 某个函数的定义位置感到头疼。而在Qt Creator 中有几种快速定位函数的方法, 我们这里讲解三种。 第一,在函数声明的地方直接跳转到函数定义的地方。 如在do_file_Load 上点击鼠标右键,在弹出的菜单中选择Follow Symbol under Cursor 或者下面的Switch between Method Declaration/Definition。 这时系统就会自动跳转到函数定义的位置。如下图。 第二,快速查找一个文件里的所有函数。 我们可以点击窗口最上面的下拉框,这里会显示本文件中所有函数的列表。 第三,利用查找功能。 1.我们先将鼠标定位到一个函数名上。 2.然后选择Edit->Find/Replace->Find Dialog。 3.这时会出现一个查找对话框,可以看到要查找的函数名已经写在里面了。 4.当我们按下Search 按钮后,会在查找结果窗口显示查找到的结果。 5.我们点击第二个文件。会发现在这个文件中有两处关键字是高亮显示。 6.我们双击第二项,就会自动跳转到函数的定义处。 文章讲到这里,我们已经很详细地说明了怎样去使用一个类里面没有用过的方法 函数;也说明了Qt Creator 中的一些便捷操作。可以看到,Qt Creator 开发环 境,有很多很人性化的设计,我们应该熟练应用它们。 在以后的文章中,我们不会再很详细地去用帮助来说明一个函数是 怎么来的,该怎么用,这些应该自己试着去查找。 八、Qt Creator 实现状态栏显示(原创) 在程序主窗口Mainwindow 中,有菜单栏,工具栏,中心部件和状态栏。前面几 个已经讲过了,这次讲解状态栏的使用。 程序中有哪些不明白的类或函数,请自己查看帮助。 1.我们在mainwindow.h 中做一下更改。 加入头文件含: #include <QLabel> 加入私有变量和函数: QLabel* first_statusLabel; //声明两个标签对象,用于显示状态信息 QLabel* second_statusLabel; void init_statusBar(); //初始化状态栏 加入一个槽函数声明:void do_cursorChanged(); //获取光标位置信息 2.在mainwindow.cpp 中加入状态栏初始化函数的定义。 void MainWindow::init_statusBar() { QStatusBar* bar = ui->statusBar; //获取状态栏 first_statusLabel = new QLabel; //新建标签 first_statusLabel->setMinimumSize(150,20); //设置标签最小尺寸 first_statusLabel->setFrameShape(QFrame::WinPanel); //设置标签形状 first_statusLabel->setFrameShadow(QFrame::Sunken); //设置标签阴影 second_statusLabel = new QLabel; second_statusLabel->setMinimumSize(150,20); second_statusLabel->setFrameShape(QFrame::WinPanel); second_statusLabel->setFrameShadow(QFrame::Sunken); bar->addWidget(first_statusLabel); bar->addWidget(second_statusLabel); first_statusLabel->setText(tr("欢迎使用文本编辑器")); //初始化内容 second_statusLabel->setText(tr("yafeilinux 制作!")); } 这里将两个标签对象加入到了主窗口的状态栏里,并设置了他们的外观和初值。 3.在构造函数里调用状态栏初始化函数。 init_statusBar(); 这时运行程序,效果如下。 4.在mainwindow.cpp 中加入获取光标位置的函数的定义。 void MainWindow::do_cursorChanged() { int rowNum = ui->textEdit->document()->blockCount(); //获取光标所在行的行号 const QTextCursor cursor = ui->textEdit->textCursor(); int colNum = cursor.columnNumber(); //获取光标所在列的列号 first_statusLabel->setText(tr("%1 行 %2 列").arg(rowNum).arg(colNum)); //在状态栏显示光标位置 } 这个函数可获取文本编辑框中光标的位置,并显示在状态栏中。 5.在构造函数添加光标位置改变信号的关联。 connect(ui->textEdit,SIGNAL(cursorPositionChanged()),this,SLOT(do_cur sorChanged())); 这时运行程序。效果如下。 6.在do_file_Load 函数的最后添加下面语句。 second_statusLabel->setText(tr("打开文件成功")); 7.在saveFile 函数的最后添加以下语句。 second_statusLabel->setText(tr("保存文件成功")); 8.在on_action_Find_triggered 函数的后面添加如下语句。 second_statusLabel->setText(tr("正在进行查找")); 9.在on_action_Close_triggered 函数最后添加如下语句。 first_statusLabel->setText(tr("文本编辑器已关闭")); second_statusLabel->setText(tr("yafeilinux 制作!")); 到这里整个文本编辑器的程序就算写完了。我们这里没有写帮助菜单的功能实 现,大家可以自己添加。而且程序中也有很多漏洞和不完善的地方,如果有兴 趣,大家也可以自己修改。因为时间和篇幅的原因,我们这里就不再过多的讲 述。 九、Qt Creator 中鼠标键盘事件的处理实现自定义鼠标指针(原创) 我们前面一直在说信号,比方说用鼠标按了一下按钮,这样就会产生一个按钮的 单击信号,然后我们可以在相应的槽函数里进行相应功能的设置。其实在按下鼠 标后,程序要先接收到鼠标按下的事件,然后将这个事件按默认的设置传给按钮。 可以看出,事件和信号并不是一回事,事件比信号更底层。而我们以前把单击按 钮也叫做事件,这是不确切的,不过大家都知道是什么意思,所以当时也没有细 分。 Qt 中的事件可以在QEvent 中查看。下面我们只是找两个例子来进行简单的演示。 1.还是先建立一个Qt4 Gui Application 工程,我这里起名为event。 2.添加代码,让程序中可以使用中文。 即在main.cpp 文件中加入#include <QTextCodec>的头文件含。 再在下面的主函数里添加 QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 3.在mainwindow.h 文件中做一下更改。 添加#include <QtGui>头文件。因为这样就含了QtGui 中所有的子文件。 在public 中添加两个函数的声明 void mouseMoveEvent(QMouseEvent *); void keyPressEvent(QKeyEvent *); 4.我们在mainwindow.ui 中添加一个Label 和一个PushButton,将他们拉长点, 因为一会要在上面显示标语。 5.在mainwindow.cpp 中的构造函数里添加两个部件的显示文本。 ui->label->setText(tr("按下键盘上的A 键试试!")); ui->pushButton->setText(tr("按下鼠标的一个键,然后移动鼠标试试")); 6.然后在下面进行两个函数的定义。 /*以下是鼠标移动事件*/ void MainWindow::mouseMoveEvent(QMouseEvent *m) {//这里的函数名和参数不能更改 QCursor my(QPixmap("E:/Qt/Qt-Creator-Example/event/time.png")); //为鼠标指针选择图片,注意这里要用绝对路径,且要用“/”,而不能用“\” QApplication::setOverrideCursor(my); //将鼠标指针更改为自己设置的图片 int x = m->pos().x(); int y = m->pos().y(); //获取鼠标现在的位置坐标 ui->pushButton->setText(tr("鼠标现在的坐标是(%1,%2), 哈哈好玩吧 ").arg(x).arg(y)); //将鼠标的位置坐标显示在按钮上 ui->pushButton->move(m->pos()); //让按钮跟随鼠标移动 } /*以下是键盘按下事件*/ void MainWindow::keyPressEvent(QKeyEvent *k) { if(k->key() == Qt::Key_A) //判断是否是A 键按下 { ui->label->setPixmap(QPixmap("E:/Qt/Qt-Creator-Example/event/linux.jp g")); ui->label->resize(100,100); //更改标签图片和大小 } } 注意:这两个函数不是自己新建的,而是对已有函数的重定义,所有函数名和参 数都不能改。第一个函数对鼠标移动事件进行了重写。其中实现了鼠标指针的更 改,和按钮跟随鼠标移动的功能。 第二个函数对键盘的A 键按下实现了新的功能。 效果如下。 按下鼠标的一个键,并移动鼠标。 按下键盘上的A 键。 十、Qt Creator 中实现定时器和产生随机数(原创) 有两种方法实现定时器。 第一种。自己建立关联。 1.新建Gui 工程,工程名可以设置为timer。并在主界面上添加一个标签label, 并设置其显示内容为“0000-00-00 00:00:00 星期日”。 2.在mainwindow.h 中添加槽函数声明。 private slots: void timerUpDate(); 3.在mainwindow.cpp 中添加代码。 添加#include <QtCore>的头文件含,这样就含了QtCore 下的所有文件。 构造函数里添加代码: QTimer *timer = new QTimer(this); //新建定时器 connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate())); //关联定时器计满信号和相应的槽函数 timer->start(1000); //定时器开始计时,其中1000 表示1000ms 即1 秒 4.然后实现更新函数。 void MainWindow::timerUpDate() { QDateTime time = QDateTime::currentDateTime(); //获取系统现在的时间 QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd"); //设置系统时间显示格式 ui->label->setText(str); //在标签上显示时间 } 5.运行程序,效果如下。 第二种。使用事件。(有点像单片机中的定时器啊) 1.新建工程。在窗口上添加两个标签。 2.在main.cpp 中添加代码,实现中文显示。 #include <QTextCodec> QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 3.在mainwindow.h 中添加代码。 void timerEvent(QTimerEvent *); 4.在mainwindow.cpp 中添加代码。 添加头文件#include <QtCore> 在构造函数里添加以下代码。 startTimer(1000); //其返回值为1,即其timerId 为1 startTimer(5000);//其返回值为2,即其timerId 为2 startTimer(10000); //其返回值为3,即其timerId 为3 添加了三个定时器,它们的timerId 分别为1,2,3。注意,第几个定时器的返 回值就为几。所以要注意定时器顺序。 在下面添加函数实现。 void MainWindow::timerEvent(QTimerEvent *t) //定时器事件 { switch(t->timerId()) //判断定时器的句柄 { case 1 : ui->label->setText(tr("每秒产生一个随机数: %1").arg(qrand()%10));break; case 2 : ui->label_2->setText(tr("5 秒后软件将关闭"));break; case 3 : qApp->quit();break; //退出系统 } } 这里添加了三个定时器,并都在定时器事件中判断它们,然后执行相应的功能。 这样就不用每个定时器都写一个关联函数和槽函数了。 随机数的实现: 上面程序中的qrand(),可以产生随机数,qrand()%10 可以产生0-9 之间的随机 数。要想产生100 以内的随机数就%100。以此类推。 但这样每次启动程序后,都按同一种顺序产生随机数。为了实现每次启动程序产 生不同的初始值。我们可以使用qsrand(time(0));实现设置随机数的初值,而 程序每次启动时time(0)返回的值都不同,这样就实现了产生不同初始值的功 能。 我们将qsrand(time(0));一句加入构造函数里。 程序最终运行效果如下。 十一、Qt 2D 绘图(一)绘制简单图形(原创) 声明:本文原创于yafeilinux 的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 说明:以后使用的环境为基于Qt 4.6 的Qt Creator 1.3.0 windows 版本 本文介绍在窗口上绘制最简单的图形的方法。 1.新建Qt4 Gui Application 工程,我这里使用的工程名为painter01,选用 QDialog 作为Base class 2.在dialog.h 文件中声明重绘事件函数void paintEvent(QPaintEvent *); 3.在dialog.cpp 中添加绘图类QPainter 的头文件含#include <QPainter> 4.在下面进行该函数的重定义。 void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawLine(0,0,100,100); } 其中创建了QPainter 类对象,它是用来进行绘制图形的,我们这里画了一条线 Line,其中的参数为线的起点(0,0),和终点(100,100)。这里的数值指的 是像素,详细的坐标设置我们以后再讲,这里知道(0,0)点指的是窗口的左上 角即可。运行效果如下: 5.在qt 的帮助里可以查看所有的绘制函数,而且下面还给出了相关的例子。 6.我们下面将几个知识点说明一下,帮助大家更快入门。 将函数改为如下: void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QPen pen; //画笔 pen.setColor(QColor(255,0,0)); QBrush brush(QColor(0,255,0,125)); //画刷 painter.setPen(pen); //添加画笔 painter.setBrush(brush); //添加画刷 painter.drawRect(100,100,200,200); //绘制矩形 } 这里的pen 用来绘制边框,brush 用来进行封闭区域的填充,QColor 类用来提供 颜色,我们这里使用了rgb 方法来生成颜色,即(red,green,blue),它们取 值分别是0-255,例如(255,0,0)表示红色,而全0 表示黑色,全255 表示 白色。后面的(0,255,0,125),其中的125 是透明度(alpha)设置,其值 也是从0 到255,0 表示全透明。最后将画笔和画刷添加到painter 绘制设备中, 画出图形。这里的Rect 是长方形,其中的参数为(100,100)表示起始坐标, 200,200 表示长和宽。效果如下: 7.其实画笔和画刷也有很多设置,大家可以查看帮助。 QPainter painter(this); QPen pen(Qt::DotLine); QBrush brush(Qt::blue); brush.setStyle(Qt::HorPattern); painter.setPen(pen); painter.setBrush(brush); painter.drawRect(100,100,200,200); 这里我们设置了画笔的风格为点线,画刷的风格为并行横线,效果如下: 在帮助里可以看到所有的风格。 我们这里用了Qt::blue,Qt 自定义的几个颜色如下: 8.画弧线,这是帮助里的一个例子。 QRectF rectangle(10.0, 20.0, 80.0, 60.0); //矩形 int startAngle = 30 * 16; //起始角度 int spanAngle = 120 * 16; //跨越度数 QPainter painter(this); painter.drawArc(rectangle, startAngle, spanAngle); 这里要说明的是,画弧线时,角度被分成了十六分之一,就是说,要想为30 度, 就得是30*16。它有起始角度和跨度,还有位置矩形,要想画出自己想要的弧线, 就要有一定的几何知识了。这里就不再祥述。 十二、Qt 2D 绘图(二)渐变填充(原创) 声明:本文原创于yafeilinux 的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 在qt 中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变。如果能 熟练应用它们,就能设计出炫目的填充效果。 线性渐变: 1.更改函数如下: void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QLinearGradient linearGradient(100,150,300,150); //从点(100,150)开始到点(300,150)结束,确定一条直线 linearGradient.setColorAt(0,Qt::red); linearGradient.setColorAt(0.2,Qt::black); linearGradient.setColorAt(0.4,Qt::yellow); linearGradient.setColorAt(0.6,Qt::white); linearGradient.setColorAt(0.8,Qt::green); linearGradient.setColorAt(1,Qt::blue); //将直线开始点设为0,终点设为1,然后分段设置颜色 painter.setBrush(linearGradient); painter.drawRect(100,100,200,100); //绘制矩形,线性渐变线正好在矩形的水平中心线上 } 效果如下: 圆形渐变: 1.更改函数内容如下: QRadialGradient radialGradient(200,100,100,200,100); //其中参数分别为圆形渐变的圆心(200,100),半径100,和焦点(200, 100) //这里让焦点和圆心重合,从而形成从圆心向外渐变的效果 radialGradient.setColorAt(0,Qt::black); radialGradient.setColorAt(1,Qt::yellow); //渐变从焦点向整个圆进行,焦点为起始点0,圆的边界为1 QPainter painter(this); painter.setBrush(radialGradient); painter.drawEllipse(100,0,200,200); //绘制圆,让它正好和上面的圆形渐变的圆重合 效果如下: 2.要想改变填充的效果,只需要改变焦点的位置和渐变的颜色位置即可。 改变焦点位置:QRadialGradient radialGradient(200,100,100,100,100); 效果如下: 锥形渐变: 1.更改函数内容如下: //圆锥渐变 QConicalGradient conicalGradient(50,50,0); //圆心为(50,50),开始角度为0 conicalGradient.setColorAt(0,Qt::green); conicalGradient.setColorAt(1,Qt::white); //从圆心的0 度角开始逆时针填充 QPainter painter(this); painter.setBrush(conicalGradient); painter.drawEllipse(0,0,100,100); 效果如下: 2.可以更改开始角度,来改变填充效果 QConicalGradient conicalGradient(50,50,30); 开始角度设置为30 度,效果如下: 其实三种渐变的设置都在于焦点和渐变颜色的位置,如果想设计出漂亮的渐变 效果,还要有美术功底啊! 十二、Qt 2D 绘图(三)绘制文字(原创) 声明:本文原创于yafeilinux 的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 接着上一次的教程,这次我们学习在窗体上绘制文字。 1.绘制最简单的文字。 我们更改重绘函数如下: void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawText(100,100,"yafeilinux"); } 我们在(100,100)的位置显示了一行文字,效果如下。 2.为了更好的控制字体的位置。我们使用另一个构造函数。在帮助里查看 drawText,如下。 这里我们看到了构造函数的原型和例子。其中的flags 参数可以控制字体在矩形 中的位置。我们更改函数内容如下。 void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QRectF ff(100,100,300,200); //设置一个矩形 painter.drawRect(ff); //为了更直观地看到字体的位置,我们绘制出这个矩形 painter.setPen(QColor(Qt::red)); //设置画笔颜色为红色 painter.drawText(ff,Qt::AlignHCenter,"yafeilinux"); //我们这里先让字体水平居中 } 效果如下。 可以看到字符串是在最上面水平居中的。如果想让其在矩形正中间,我们可以使 用Qt::AlignCenter。 这里我们也可以使用两个枚举变量进行按位与操作,例如可以使用 Qt::AlignBottom|Qt::AlignHCenter 实现让文字显示在矩形下面的正中间。效 果如下。 对于较长的字符串,我们也可以利用“\n”进行换行,例如"yafei\nlinux"。效 果如下。 3.如果要使文字更美观,我们就需要使用QFont 类来改变字体。先在帮助中查 看一下这个类。 可以看到它有好几个枚举变量来设置字体。下面的例子我们对主要的几个选项进 行演示。 更改函数如下。 void Dialog::paintEvent(QPaintEvent *) { QFont font("Arial",20,QFont::Bold,true); //设置字体的类型,大小,加粗,斜体 font.setUnderline(true); //设置下划线 font.setOverline(true); //设置上划线 font.setCapitalization(QFont::SmallCaps); //设置大小写 font.setLetterSpacing(QFont::AbsoluteSpacing,5); //设置间距 QPainter painter(this); painter.setFont(font); //添加字体 QRectF ff(100,100,300,200); painter.drawRect(ff); painter.setPen(QColor(Qt::red)); painter.drawText(ff,Qt::AlignCenter,"yafeilinux"); } 效果如下。 这里的所有字体我们可以在设计器中进行查看。如下。 基于Qt 4.6 的Qt Creator 1.3.0 环境变量设置(原创) 如果你以前安装过visual studio 2005 之类的软件,那么装上Qt Creator 1.3.0 后,编译运行其自带的演示程序时就可能出现如下图的,105 个错误,几十个警 告的问题。 我们查看输出窗口,如下图。会发现它居然显示VC98 之类的东西,就是说它并 没有去自己的include 文件夹 中查找文件。我们可以怀疑是系统环境变量的问题了。 点击Qt Creator 界面左侧的projects 图标,查看工程信息。这里我们主要查看 编辑环境Buid Environment,点击其右侧的show Details。 可以看到其中的include 和lib 均指向了virtual studio 文件夹中,我们需要 将其改正。 将他们都改为自己Qt Creator 安装目录下的相关路径,如下图。(要换成你的 安装路径) 改完后会发现新的设置已经显示出来了。 我们查看下面的Run Environment,发现它已经自己改过来了。 回到编辑界面,右击工程文件,在弹出的菜单上选择Clean project,清空以前 的编译信息。 然后运行Run qmake,生成Makefile 文件。 最后,点击run 或者build 都可,这时程序已经能正常编译运行了。 基于Qt 4.6 的Qt Creator 1.3.0 写helloworld 程序注意事项(原创) 注意:下面指的是在windows 下,linux 下的情况可进行相应改变 昨天Qt 4.6 和Qt Creator 1.3.0 正式版发布了,但是如果以前用过旧版本,就 可能出一些问题。 1.用debug 方式 如果你以前用了Qt 4.5 的Qt Creator,并且将QtCored4.dll,QtGuid4.dll, mingwm10.dll 等文件放到了C 盘的system 文件夹下。那么请先将它们删除,不 然编译不会通过。 编译完helloworld 程序后,如果要直接执行exe 文件,需要将安装目录(新版 Qt)下的qt/bin 目录下的QtCored4.dll,QtGuid4.dll,mingwm10.dll,和 libgcc_s_dw2-1.dll(这个是新增的)文件放在exe 文件夹中。或者将它们放到 系统的system 文件夹下。 2.选择release 方式 编译程序后生成exe 文件 1.需要Qt 安装目录下的qt/bin 目录中的QtGui4.dll ,Qt Core4.dll, libgcc_s_dw2-1.dll 以及mingwm10.dll 四个文件的支持,将它们拷贝到exe 文 件目录下。 2.程序中默认只支持png 图片,如果使用了gif,jpg 等格式的文件是显示不出 来的。需要将Qt 安装目录下的qt/plugins/目录中的imageformats 文件夹拷贝 到exe 文件目录下(注意是整个文件夹)。而imageformats 文件夹中只需要保 留你需要的文件,例如你只需要支持gif 文件,就只保留qgif4.dll 即可。 ‘Qt Creator 发布release 软件相关注意事项(原创) 注意:环境是windows 选择release 编译程序后生成exe 文件 1.需要Qt 安装目录下的qt/bin 目录中的QtGui4.dll 和 Qt Core4.dll 以及 mingwm10.dll 三个文件的支持,将它们拷贝到exe 文件目录下。 2.程序中默认只支持png 图片,如果使用了gif,jpg 等格式的文件是显示不出 来的。需要将Qt 安装目录下的qt/plugins/目录中的imageformats 文件夹拷贝 到exe 文件目录下(注意是整个文件夹)。而imageformats 文件夹中只需要保 留你需要的文件,例如你只需要支持gif 文件,就只保留qgif4.dll 即可。 Qt Creator 的 error: collect2: ld returned 1 exit status 问题 利用Qt Creator 1.2.1( Built on Sep 30 2009 at 05:21:42)编译 程序经常会出现error: collect2: ld returned 1 exit status 的错误,但是 自己的程序没有一点问题,怎么回事呢? 如果这时退出软件,再重新进入,打开刚才的工程,重新编译, 就不会出现刚才的错误了。这应该是Qt Creator 软件的问题吧! 后来发现是因为上次执行的程序还在运行,你打开windows 的任 务管理器中的进程可以看见你刚才运行的程序还在执行,我们看不见,是因为它 在后台执行着。出现这个现象,是因为你写的代码的问题,比如在main 函数里 用了w.show();语句,就可能出现界面一闪而过,但它并没有关闭,而是在后台 运行,所以再次运行时就会出错。我们可以在资源管理器中将该进程关闭,或者 像上面那样直接关闭Qt Creator。 示例: #include <QtGui/QApplication> #include "widget.h" #include "logindlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); loginDlg m; if(m.exec()==QDialog::Accepted) { Widget w; w.show(); } return a.exec(); } 执行后就会在后台运行。这时如果修改了代码再次运行程序,就会出现上面的错 误。 在任务管理器中可以看见自己的程序: 将该进程结束,然后在重新运行,就不会出错了。 正确的代码应该这样写: int main(int argc, char *argv[]) { QApplication a(argc, argv); loginDlg m; Widget w; if(m.exec()==QDialog::Accepted) { w.show(); return a.exec(); } else return 0; //关闭整个程序 } 这样新建的对象w 就不是局部变量了,这样运行程序w 表示的窗口不会一闪而过, 会一直显示。程序也不会再出现上面的错误了。 QT 常用问题解答(转) 本文是我前几天一个网友告诉我的,当时看了感觉好,就保存下来。今天再次查 看,感觉有必要把文章分享给各位学习QT 的朋友,因为网上好用的QT 资源真的 好少。 1、如果在窗体关闭前自行判断是否可关闭 答:重新实现这个窗体的closeEvent()函数,加入判断操作 Quote: void MainWindow::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettings(); event->accept(); } else { event->ignore(); } } 2、如何用打开和保存文件对话 答:使用QFileDialog Quote: QString fileName = QFileDialog::getOpenFileName(this); if (!fileName.isEmpty()) { loadFile(fileName); } Quote: QString fileName = QFileDialog::getSaveFileName(this); if (fileName.isEmpty()) { return false; } 3、如果创建Actions(可在菜单和工具栏里使用这些Action) 答: Quote: newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); newAct->setShortcut(tr("Ctrl+N")); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); openAct->setShortcut(tr("Ctrl+O")); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(open())); saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); saveAct->setShortcut(tr("Ctrl+S")); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); saveAsAct = new QAction(tr("Save &As..."), this); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); exitAct = new QAction(tr("E&xit"), this); exitAct->setShortcut(tr("Ctrl+Q")); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this); cutAct->setShortcut(tr("Ctrl+X")); cutAct->setStatusTip(tr("Cut the current selection's contents to the " "clipboard")); connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut())); copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this); copyAct->setShortcut(tr("Ctrl+C")); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy())); pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this); pasteAct->setShortcut(tr("Ctrl+V")); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); connect(pasteAct, SIGNAL(triggered()), textEdit, SLOT(paste())); aboutAct = new QAction(tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); aboutQtAct = new QAction(tr("About &Qt"), this); aboutQtAct->setStatusTip(tr("Show the Qt library's About box")); connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); 4、如果创建主菜单 答:采用上面的QAction 的帮助,创建主菜单 Quote: fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addSeparator(); fileMenu->addAction(exitAct); editMenu = menuBar()->addMenu(tr("&Edit")); editMenu->addAction(cutAct); editMenu->addAction(copyAct); editMenu->addAction(pasteAct); menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); 5、如果创建工具栏 答:采用上面的QAction 的帮助,创建工具栏 Quote: fileToolBar = addToolBar(tr("File")); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); fileToolBar->addAction(saveAct); editToolBar = addToolBar(tr("Edit")); editToolBar->addAction(cutAct); editToolBar->addAction(copyAct); editToolBar->addAction(pasteAct); 6、如何使用配置文件保存配置 答:使用QSettings 类 Quote: QSettings settings("Trolltech", "Application Example"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); Quote: QSettings settings("Trolltech", "Application Example"); settings.setValue("pos", pos()); settings.setValue("size", size()); 7、如何使用警告、信息等对话框 答:使用QMessageBox 类的静态方法 Quote: int ret = QMessageBox::warning(this, tr("Application"), tr("The document has been modified.\n" "Do you want to save your changes?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); if (ret == QMessageBox::Yes) return save(); else if (ret == QMessageBox::Cancel) return false; 8、如何使通用对话框中文化 答:对话框的中文化 比 如说,QColorDialog 的与文字相关的部分,主要在qcolordialog.cpp 文件 中,我们可以从qcolordialog.cpp 用 lupdate 生成一个ts 文件,然后用自定 义这个ts 文件的翻译,再用lrelease 生成一个.qm 文件,当然了,主程序就要 改变要支持多国语言了, 使用这个.qm 文件就可以了。 另外,还有一个更快的方法,在源代码解开后有一个目录translations,下面 有一些.ts, .qm 文件,我们拷贝一个: Quote: cp src/translations/qt_untranslated.ts ./qt_zh_CN.ts 然 后,我们就用Linguist 打开这个qt_zh_CN.ts,进行翻译了,翻译完成后, 保存后,再用lrelease 命令生成qt_zh_CN.qm, 这样,我们把它加入到我们的 qt project 中,那些系统的对话框,菜单等等其它的默认是英文的东西就能显 示成中文了。 9、在Windows 下Qt 里为什么没有终端输出? 答:把下面的配置项加入到.pro 文件中 Quote: win32:CONFIG += console 10、Qt 4 for X11 OpenSource 版如何静态链接? 答:编译安装的时候加上-static 选项 Quote: ./configure -static //一定要加static 选项 gmake gmake install 然后,在Makefile 文件中加 static 选项或者在.pro 文件中加上QMAKE_LFLAGS += -static,就可以连接静态库了。 11、想在源代码中直接使用中文,而不使用tr()函数进行转换,怎么办? 答:在main 函数中加入下面三条语句,但并不提倡 Quote: QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 或者 Quote: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); 使用GBK 还是使用UTF-8,依源文件中汉字使用的内码而定 这样,就可在源文件中直接使用中文,比如: Quote: QMessageBox::information(NULL, "信息", "关于本软件的演示信息", QMessageBox::Ok, QMessageBox::NoButtons); 12、为什么将开发的使用数据库的程序发布到其它机器就连接不上数据库? 答:这是由于程序找不到数据库插件而致,可照如下解决方法: 在main 函数中加入下面语句: Quote: QApplication::addLibraryPath(strPluginsPath"); strPluginsPath 是插件所在目录,比如此目录为/myapplication/plugins 则将需要的sql 驱动,比如qsqlmysql.dll, qsqlodbc.dll 或对应的.so 文件放 到 /myapplication/plugins/sqldrivers/ 目录下面就行了 这是一种解决方法,还有一种通用的解决方法,即在可执行文件目录下写 qt.conf 文件,把系统相关的一些目录配置写到qt.conf 文件里,详细情况情参 考Qt Document Reference 里的qt.conf 部分 13、如何创建QT 使用的DLL(.so)以及如何使用此DLL(.so) 答:创建DLL 时其工程使用lib 模板 Quote: TEMPLATE=lib 而源文件则和使用普通的源文件一样,注意把头文件和源文件分开,因为在其它 程序使用此DLL 时需要此头文件 在使用此DLL 时,则在此工程源文件中引入DLL 头文件,并在.pro 文件中加入 下面配置项: Quote: LIBS += -Lyourdlllibpath -lyourdlllibname Windows 下和Linux 下同样(Windows 下生成的DLL 文件名为yourdlllibname.dll 而在Linux 下生成的为libyourdlllibname.so。注意,关于DLL 程序的写法, 遵从各平台级编译器所定的规则。 14、如何启动一个外部程序 答:1、使用QProcess::startDetached()方法,启动外部程序后立即返回; 2、使用QProcess::execute(),不过使用此方法时程序会最阻塞直到此方法执 行的程序结束后返回
Radmin自动登陆器 v3.0 - By: [email protected] 20180106 By: [email protected] , http://dep.yibinu.cn/wgzxnew/ 1、程序功能和使用环境介绍 2、程序操作方法介绍 3、登录信息文件RadminM.txt介绍 4、登录信息文件RadminM.txt的转换和编制 5、v3.0版新增解锁 远程桌面功能 6、相关配置和多种语言支持介绍 7、免责申明 1、程序功能和使用环境介绍 (1)、程序功能 为了安全高效地使用Radmin Viewer来自动登录和管理多台服务器,故编制RadminM (Radmin Connection Manager,Radmin自动登录器)。 v3.0版的可执行文件是RadminM.exe,一台电脑只能运行一个实例,再次运行只是将已运行的实例调到前台。v3.0版之前的老版本的可执行文件是RadminM2.exe。 新版的功能已经比较完善,基本上可以代替Radmin Viewer 3.5进行管理(除Intel AMT功能外),另外还增加了一些实用功能,支持Windows Xp、Vista、Win7、Win8、2003、2000、9x及相应Windows Server版等操作系统。 (2)、程序使用环境要求 使用前请将Radmin Viewer 3.5的Radmin.exe文件直接拷贝到该目录中,其它Radmin Viewer 3.x版本也可以,中文版、英文版均可; 请设置防火墙允许Radmin.exe和RadminM.exe(仅扫描功能用)访问网络; 若要用到聊天、语音聊天、传送信息等连接模式,必须将相应的8个dll文件也拷贝到该目录中:ChatLPCx.dll、raudiox.dll、rchatx.dll、unicows.dll、vcintcx.dll、vcintsx.dll、voicex.dll、WinLpcDl.dll。 (3)、Radmin Server使用权限设置(新版本可选) 注意:在v1.5及以前的老版本中,Radmin Server被控端必须将“使用权限...”(Permissions)设置为“Windows NT 安全性”(Security),如果设置为“Radmin安全性”(Security)将不能实现自动登录功能。在新版本中,这两种安全性模式下,都可以实现自动登录功能。 (4)、开发环境 v1.5及以前的老版本用AutoIt语言开发,AutoIt是解释性语言,功能和稳定性有限,并且一些防病毒软件会报警。 为了在功能和稳定性方面进一步提高和改进,v2.0版使用VC++ Unicode(MFC)编程,程序在编译时已经集成了VC运行库,可独立运行。 由于MFC越益臃肿笨重,为了提高稳定性和效率,v3.0版使用WTL VC++ Unicode编程,程序短小精悍、可独立运行。WTL是Windows Template Library,可参见 http://wtl.sourceforge.net/ 。 2、程序操作方法介绍 (1)、程序中的鼠标操作 * 双击某条记录以默认模式自动连接(等待6秒);若该记录含私有代理将自动进行代理连接(代理登录和目标登录各等待6秒); * 左上角的选择框或主菜单都可以选择默认连接模式; * 先右击某条记录(或F9)填为强制代理(支持域名),并选中强制代理选项,便可对另一条记录强制进行代理连接(将忽略私有代理); * 支持鼠标滚轮; * 主菜单和右键菜单均可完成本程序的常规操作;记录窗格的右键菜单或单击工具栏的相应按钮可直接选择进行指定模式的连接(将忽略默认连接模式); * 主菜单中的“配置”菜单可以选择程序的各项相关配置; * 工具栏各个按钮的功能均有提示; * 单击工具栏上的“显示隐藏树状目录”按钮可以显示隐藏目录树窗格,目录树窗格的右键菜单可完成目录树的一些常规操作; * 单击工具栏上的“选择切换图标查看模式”按钮可以切换或选择记录窗格的图标查看模式; * 记录窗格和目录树窗格都支持鼠标拖放功能,强烈建议用户使用该功能前备份RadminM.txt,以免损坏或丢失数据;直接鼠标拖放为移动,Ctrl+鼠标拖放为复制。拖放时状态栏有提示信息; * 程序启动时,记录自动按记录名称升序排列;在记录窗格单击列表框某列表头,可以按该列进行记录排序,再次单击可以反向排序。 (2)、程序中的常用快捷键 * Enter :以默认模式连接记录; * Insert :新建记录; * Ctrl+e :编辑记录; * Ctrl+c :复制记录; * Ctrl+x :剪切记录; * Ctrl+v :粘贴记录; * Delete :删除记录或目录(在记录窗格),或删除树状目录(在目录树窗格); * F1 :显示程序信息; * F2 :更名树状目录; * F3 :单条扫描(等待5秒,用于扫描网速较慢的记录); * F5 :全部扫描(多线程同时扫描,每条记录等待5秒); 扫描过程中左下角状态栏会有提示,扫描完成后提示消失,扫描过程中建议不要新建、修改、删除、粘贴、剪切、排序记录,不然可能出现扫描结果错乱,其它功能可正常使用; * F7 :新建树状目录; * F9 :将选中记录填为强制代理(主菜单上“强制代理信息”项显示将从[无]变为[有],打开该菜单可查看信息); * Ctrl+- :隐藏窗口到系统托盘; * Ctrl+= :显示窗口; * 双击系统托盘图标可隐藏或显示窗口; * 窗口大小可调整,支持最大化和还原; * 支持Home、End、PageUp、PageDown等操作。 3、登录信息文件RadminM.txt介绍 (1)、RadminM.txt内容说明 登录信息存放在RadminM.txt文件中,若没有会自动创建,密码用RC4加密,请用户注意保管。RadminM.txt是遵循CSV格式的ANSI文本文件,所有字段内容都不能含英文惊叹号“!”、英文逗号“,”、竖线分隔符“|”。 第一行为登录记录各字段的名称。每行存放一条记录,每条记录含用17个英文逗号分隔的18个字段。 RecordName 记录名称是关键字段,支持中文记录名称,不能为空、不要有重名; IP、Port、User、Password 分别是IP地址、端口、用户名、密码。IP地址不能为空,若端口为空程序将使用缺省端口4899; Domain 是域名,该字段有内容在登录时便会自动填写; ColorDepth 是在“完全控制”或“仅限查看”连接模式,指定传输图像的色彩深度。色彩深度大小与传输速度成反比; Updates 是在“完全控制”或“仅限查看”连接模式,指定屏幕每秒最大刷新率,为1到100之间的数值; UnlockDesktop 是在“完全控制”连接模式连接成功后,若远程桌面已登录锁定、且焦点位于密码输入框,可用连接Radmin的密码解锁远程桌面、或 (当服务器端为Radmin Server v3.5时) 先锁定再解锁远程桌面。具体配置参见后面的介绍; Fullscreen 是在“完全控制”或“仅限查看”连接模式,以全屏幕方式、或全屏伸展方式显示远程PC窗口; Nofullkbcontrol 是在“完全控制”连接模式,阻止系统热键(如ALT-TAB)传递到远程PC; Monitor 是在“完全控制”或“仅限查看”连接模式,若远程PC有多个监视器,可指定显示其中某个监视器上的图像。比如:/monitor"\\.\DISPLAY1"。注意:只能指定在已连接窗口的菜单中显示出来的监视器; Sendrequest 是请求Radmin服务器发送Radmin服务器激活文件。将忽略其它选项。详情请参见Radmin帮助文档; Pbpath 是以指定的电话薄文件启动Radmin Viewer。比如:/pbpath"C:\my.rpb"。将忽略其它选项; Proxy 是记录的私有代理信息。私有代理格式:记录名称+目录路径。需要先将某条已有记录设置为强制代理,再选作私有代理。 AsProxyBy 是被用作私有代理字段。是指该记录被其它哪些记录用作私有代理,由程序自动处理(只读); Memory 是备注字段; TreePath 是目录路径字段,由若干英文惊叹号“!”(目录分隔符)分隔的字符串构成,支持中文目录名,如根目录下DirA子目录下的DirB子目录:!DirA!DirB 。 (2)、私有代理字段Proxy 本程序除了支持强制代理外,每条记录都可以指定私有代理。Proxy字段便是存放用作私有代理的记录信息,只能有一条;注意:只能从已有记录中指定私有代理;Proxy字段的格式:记录名称+目录路径;建议先将某条已有记录设置为强制代理,再到新建记录或编辑记录对话框中填写为私有代理;当然,若熟悉后也可以手工填写。 (3)、被用作私有代理字段AsProxyBy AsProxyBy是被用作私有代理字段,用于存放该记录被其它哪些记录用作私有代理的信息,多条记录间用竖线分隔符“|”分隔,由程序自动处理(只读);该字段主要用于当该记录名称或目录路径更改时,程序会自动更新将该记录用作私有代理的其它记录的私有代理信息;建议用户不要随意修改RadminM.txt文件中该字段的内容,不然可能会出现程序功能错乱。 (4)、格式符合要求的RadminM.txt文件示范 RecordName,IP,Port,User,Password,Domain,ColorDepth,Updates,UnlockDesktop,Fullscreen,Nofullkbcontrol,Monitor,Sendrequest,Pbpath,Proxy,AsProxyBy,Memory,TreePath sample01,192.168.0.6,4899,user01,,,,,,,,,,,,,,! sample02,192.168.0.8,4899,user02,,,,,,,,,,,,,,!DirA!DirB sample03,192.168.0.9,4899,user03,,,,,,,,,,,,,,!DirC!DirD 4、登录信息文件RadminM.txt的转换和编制 (1)、V2.0转V3.0记录文件 单击主菜单、帮助中的“V2.0转V3.0记录文件”菜单项,可以将RadminM V2.0的记录文件转换为RadminM V3.0的记录文件。执行转换之前,请先备份好RadminM.txt。新生成的文件可能覆盖RadminM.txt。 (2)、v1.5的RadminM.txt文件需先转换为v2.0的格式,再导入新版本v3.0中使用 v1.5的RadminM.txt简单修改一下就可以转换为v2.0的格式。修改的具体方法是: (A)用UltraEdit编辑器打开v1.5的RadminM.txt(用其它编辑器也可参照完成类似修改); (B)Ctrl+R调出替换对话框,在上面需要替换栏输入:^p ,在下面替换为栏输入:,!^p ,(这里,^p代表回车换行),设置好后再单击“全部替换”按钮即可,需要时可单击“帮助”按钮查看帮助信息; (C)将第一行末尾的 “!” 手工改为 “TreePath”; (D)处理完后保存为RadminM.txt。 用其它编辑器也可参照完成类似修改。转换完成后,再用上面介绍的“V2.0转V3.0记录文件”菜单项导入v3.0中使用。 (3)、用记事本、UltraEdit、Excel等编制RadminM.txt RadminM.txt可以用记事本、UltraEdit、Excel等编制。也可将已有RadminM.txt导入Excel处理,具体方法是: (A)启动Excel,选择菜单“数据->导入外部数据->导入数据”,选择RadminM.txt文件; (B)文本导入向导第1步,直接单击“下一步”; (C)第2步必须选中“逗号”分隔符,再单击“下一步”; (D)第3步必须将所有18列都设置为文本,依次选中下面数据预览里的各列,再选择右上面列数据格式里的“文本”。全部设置好后,再单击“完成”、“确定”即可成功导入; (E)处理完后须保存为CSV格式文件,再更名为RadminM.txt便可使用。 5、v3.0版新增解锁远程桌面功能 (1)、解锁远程桌面功能简介 当以“完全控制”连接远程PC成功后,若远程桌面已登录锁定、且焦点位于密码输入框,可用连接Radmin的密码解锁远程桌面、或 (当服务器端为Radmin Server v3.5时) 先锁定再解锁远程桌面。 要正常使用这一功能,必须满足以下条件:远程PC已经登录、锁定远程桌面的用户密码与连接Radmin的密码一致、远程桌面的焦点位于密码输入框。 (2)、可能存在的安全隐患 注意:当服务器端为Radmin Server v3.5之前的老版本、解锁前远程桌面并未锁定而焦点又正好位于文本编辑框中,启用该功能可能会出现明文密码。 (3)、相关配置 用户可以为每条记录单独配置解锁远程桌面功能,相关配置信息保存在每条记录的UnlockDesktop字段中。慎重起见,默认并未启用该功能。用户可以根据实际情况,单独为每条记录选择不使用(该字段为空白)、或者“UnlockDesktop”、或者“LockThenUnlock”。 该字段为空白,也就是不使用该功能,便不会出现明文密码。 “UnlockDesktop”是指直接解锁远程桌面,适用于Radmin Server各版本,但可能出现明文密码。 “LockThenUnlock”是指若解锁前远程桌面处于未锁定状态、可以先锁定远程桌面再解锁,这样可以避免出现明文密码。但这要求必须使用Radmin Viewer 3.5的Radmin.exe文件,并且只对连接Radmin Server v3.5版本才有效。Radmin Viewer 3.5之前的老版本无法发送锁屏组合键Win+L,Radmin Server v3.5之前的老版本无法接收锁屏组合键Win+L,仍然存在出现明文密码的可能性。 6、相关配置和多种语言支持介绍 (1)、配置文件RadminM.ini 主菜单中的“配置”菜单可以选择程序的各项相关配置。程序的各项配置都保存在RadminM.ini配置文件中,若不存在程序会自动创建。若由于配置混乱、异常关闭等原因导致程序运行后无法显示主窗口,可以先备份然后删除RadminM.ini文件即可正常运行。 (2)、多种语言支持 本程序使用INI文件实现多种语言支持,每种语言信息用一个扩展名为lng的INI格式文件存放。语言文件可以使用Unicode或ANSI格式,一般建议使用Unicode格式。这种方式具有更多扩展性,用户可以非常简单方便地添加自己的语言文件。 本程序的默认语言是简体中文,另外提供英文语言文件English.lng。本程序启动时若没有外部语言文件,将使用内置的默认语言(简体中文)。若本程序目录下有*.lng的外部语言,程序启动后便会自动在“关于->语言”菜单下列出外部语言(以语言文件的文件名命名)。用户选择某种外部语言便可以动态切换到新语言界面,无需重新启动程序,用户的语言选择将自动保存到RadminM.ini文件中,关闭程序后下次启动也会自动使用用户选择的新语言界面。 用户可以参照English.lng语言文件的格式和内容,方便地编制修改自己的语言文件,比如French.lng。用户只需将自己编制好的语言文件拷贝到本程序目录下,重新启动程序后便会自动在“关于->语言”菜单下列出用户添加的新语言French。选择该语言便可以动态切换到新语言界面,无需重新启动程序,关闭程序后下次启动也会自动使用用户选择的新语言界面。 注意:语言文件中间不能有空行,空行就意味文件结束,空行之后就无法查找翻译。若需要空行标识分隔,可以在空行前加英文分号 ;,也即注释行。 语言文件中的字符串,若需要前导和后导空格,可以将字符串用英文双引号或英文单引号含即可。不需要空格的就无需加引号。 本程序的多种语言支持功能参照网友Yonsm提供的方式实现,有兴趣的用户可以访问网站 http://yonsm.net/ini-language-engine/。 (3)、启用Radmin帮助 在本程序中,若要启用菜单项“帮助->Radmin帮助”,需要将Radmin的chm帮助拷贝为本程序目录中的Radmin35.chm。 7、免责申明 用户可自行斟酌选用该程序,若转载请注明出处。对一切后果,作者不承担任何责任! ======================================================================================== RadminM v3.0 - By: [email protected] 20150615 By: [email protected] , http://dep.yibinu.cn/wgzxnew/ 1. The features and the running environmental of RadminM 2. The operation of RadminM 3. RadminM.txt of login information file 4. Translate and Preparation RadminM.txt 5. UnlockDesktop feature of v3.0 newly additional 6. Related settings and Multilanguage support 7. Disclaimer 1. The features and the running environmental of RadminM (1). The features of RadminM In order to safely and efficiently use Radmin Viewer to automatically login and manage multiple servers, so the program RadminM(Radmin Connection Manager) was intended to develop. The executable file is RadminM.exe of RadminM v3.0. Only one instance can run in a computer, and it only bring the running instance to the foreground if RadminM run again. And the executable file of RadminM before v3.0 is RadminM2.exe. The new version have been more improvement of the function, and user basically can manage instead of Radmin Viewer 3.5 (except Intel AMT technology). And there ars some useful features else. It support for Windows Xp, Vista, Win7, Win8, 2003, 2000, 9x and the corresponding version of Windows Server operating systems. (2). The environmental requirements of RadminM running Before use, please copy the Radmin.exe of Radmin Viewer 3.5 to this directory, Other Radmin Viewer 3.x versions of Chinese or English are also available. Please set the firewall to allow Radmin.exe and RadminM.exe (only scan function used) to access the network. To use Text Chat, Voice Chat, Send Message such as connection mode, user must copy also corresponding 8 dll files to this directory: ChatLPCx.dll, raudiox.dll, rchatx.dll, unicows.dll, vcintcx.dll, vcintsx.dll, voicex.dll, WinLpcDl.dll. (3). To set Radmin Server's Permissions(Option in the new version) Note: In v1.5 and previous versions, Radmin Server's "Permissions ..." must be set to "Windows NT security", RadminM can not be automatically login feature if it was set to "Radmin security". The new version can be automatically login in these two security modes. (4). The development environments of RadminM RadminM v1.5 and the previous version is developed by AutoIt language. As AutoIt is an interpreted language, it is limited in the functionality and stability, and some anti-virus software will alarm. In order to further improve the functionality and stability, the new version using VC++ UNICODE(MFC) programming environment. The program had already integrated VC runtime library when it was compiled, it can run independently. Because the MFC is more and more bloated and heavy, in order to further improve the stability and efficiency, v3.0 using WTL VC++ UNICODE programming environment. The program dapper, and can run independently. WTL is the abbreviation of Windows Template Library, user may refer to http://wtl.sourceforge.net/ . 2. The operation of RadminM (1). The mouse operation of RadminM * Double-click a record, RadminM will automatically connect in the default mode(wait 6 second), or RadminM will automatically Proxy connect if the record has Proxy(each of Proxy login and Target login wait respectively 6 second). * You may select the default connection mode at the ComboBox of the top left corner or the main menu. * Right-click a record (or F9) to fill as Forced Proxy (supports domain name) at first, and check the CheckBox of Forced Proxy or the menu item, you can connect another record via Forced Proxy (the Proxy will be ignored). * Mouse wheel support. * You can complete the normal operation with the main menu and right-click menu. By the right-click menu of records pane (Right Pane) or click the corresponding button on the toolbar, you can directly connect in specify mode (the default connection mode will be ignored). * There is the function prompted for each button on the toolbar. * Clicking "Show or Hide Tree" button on the toolbar will show or hide the directory tree pane. You may complete some normal trees operations by right-click menu in trees pane (Left Pane). * Records pane and trees pane support the mouse drag-and-drop function. To avoid damage or loss of data, we strongly recommended to backup RadminM.txt before useing this function. Directly drag-and-drop to move, Ctrl + drag-and-drop to copy. There is the prompted information at the status bar as drag-and-drop. * Records automatically sort in ascending order by record name when the program starts. Clicking the table head of listctrl in records pane will sort records according to this column, and clicking again will sort reverse. (2). The common Shortcuts of RadminM: * Enter : automatically connection in the default mode. * Insert : new record. * Ctrl+e : edit record. * Ctrl+c : copy record. * Ctrl+x : cut record. * Ctrl+v : paste record. * Delete : delete record and subdir (in records pane). delete subdir (in trees pane). * F1 : help information. * F2 : rename subdir (in trees pane) or edit record(in records pane). * F3 : scan one record (wait 5 seconds, used for slowly network). * F5 : scan all records by multithreading (wait 5 second for each record). There is prompt at the status bar of bottom left corner when the scan is processing, and prompt will disappear after the scan has finished. We are not recommended to create, modify, delete, paste, cut, sort records when the scan is processing, otherwise the scan results may appear confusion. But other functions may be used normally. * F7 : new subdir. * F9 : fill the selected record as Forced Proxy. (The "Forced-Proxy" item of the main menu will show from [No] to [Yes]. To click the menu, you can view the information.) * Ctrl+- : hide RadminM window to the system tray. * Ctrl+= : show RadminM window. * Double-click the system tray icon to hide or show RadminM window. * RadminM window is resizable, maximize and restore support. * RadminM supports Home, End, PageUp, PageDown, etc. 3. RadminM.txt of login information file (1). RadminM.txt description Login information is stored in RadminM.txt file. RadminM will automatically create if RadminM.txt is not exist. PassWord is encrypted by RC4, user keep attention to store. RadminM.txt is text file to follow CSV (ANSI) formatted. The contents of all field can not contain English exclamation mark "!", English comma ",", vertical separator "|". The first line is the the names of login record fields. There is only a record each line, what contains 18 fields delimited by 17 English comma. RecordName (Record Name) is the key field, support Chinese record name, but can not be empty, do not have the same record name. IP, Port, User, Password are the IP address, port, username, password. IP address can not be empty.The program will use the default port 4899 if the Port is empty. Domain is the domain name, it will be used to automatically fill in the login if Domain has content. ColorDepth is used with the "Full Control" connection mode (no mode switches) or "View Only" connection mode (the "/noinput" switch). Defines the color depth of images that Radmin Server will transfer to Radmin Viewer. ColorDepth is in inverse proportion to transmission rate. Updates is used with "Full Control" connection mode or "View Only" connection mode. Will display the remote computer window with no more than the specified number of updates per second. That is the maximum updates per second. Please input number between 1 to 100. UnlockDesktop is used with "Full Control" connection mode . After "Full Control" connection has successed, it can unlock the remote desktop with the connection password if the remote desktop has locked and the focus is in the password input box, or lock first the remote desktop then unlock when remote PC run Radmin Server v3.5. Fullscreen is used with the "Full Control" connection mode or "View Only" connection mode. Will display the remote computer window in full screen, or expanding the image if the screens resolution of the remote and local computer differs. Nofullkbcontrol is used with "Full Control" mode. The key prevents the transfer of system hotkeys (such as ALT-TAB) to the remote computer. Monitor is used with "Full Control" or "View Only" connection mode. If there are several monitors on the remote computer, this key makes it possible for you to display an image on one of them. Example: /monitor"\\.\DISPLAY1" . Note, you can only specify a monitor from which show on the connected window's menu. Sendrequest is to send specified Radmin Server activation request file to the Famatech Activation Server and saves received license file. Will ignore other options. Please refer to Radmin help for details. Pbpath is to start Radmin Viewer with specified phonebook file. Example: /pbpath"C:\my.rpb". Will ignore other options. Proxy is used to store private-proxy information of the record. Proxy Format: RecordName+TreePath. User need to select a record and set to forced-proxy at first, then fill as Proxy in the NewRecord or EditRecord dialog. AsProxyBy is being used as Proxy field. It is automatically processed by the program (Read Only). Memory is memo field. TreePath is the directory path field. TreePath is a string that consist of multiple strings division by English exclamation mark '!' (directory separator). It support Chinese directory name. Example: !DirA!DirB, the DirB under the DirA under the root. (2). The Proxy field This program not noly supports forced-proxy, each record but also can be specified private-proxy (abbreviated as Proxy). The Proxy field is used to store private-proxy information of the record, it can be only one. Note, user can only specify Proxy from existing records. Proxy Format: RecordName+TreePath. We recommend to select a record and set to forced-proxy at first, then fill as Proxy in the NewRecord or EditRecord dialog. Of course, you can also fill it by hand after familiar. (3). The AsProxyBy field The AsProxyBy field is being used as Proxy field, it is used to store the information which other records use this record as Proxy. Multiple records are delimited with vertical separator "|". It is automatically processed by the program (Read Only). This field is mainly used to automatically update the Proxy information of other records which use this record as Proxy when this record's RecordName or TreePath is changed. We recommend that user do not arbitrarily modify the contents of this field in RadminM.txt, otherwise the program may appear functional disorder. (4). Example: a fitting format RadminM.txt RecordName,IP,Port,User,Password,Domain,ColorDepth,Updates,UnlockDesktop,Fullscreen,Nofullkbcontrol,Monitor,Sendrequest,Pbpath,Proxy,AsProxyBy,Memory,TreePath sample01,192.168.0.6,4899,user01,,,,,,,,,,,,,,! sample02,192.168.0.8,4899,user02,,,,,,,,,,,,,,!DirA!DirB sample03,192.168.0.9,4899,user03,,,,,,,,,,,,,,!DirC!DirD 4. Translate and Preparation RadminM.txt (1). V2.0 to V3.0 RadminM.txt User can translate RadminM V2.0 record file to V3.0 by "V2.0 to V3.0 RadminM.txt" menu of Help in the main menu. Please backup RadminM.txt before performing the transfer. New file may overwrite RadminM.txt. (2). The v1.5 RadminM.txt need to translate to v2.0 fromat, then it can be translated to v3.0 The v1.5 RadminM.txt can be used in the new version after simply modification. The modification procedure is: (A) To open the v1.5 RadminM.txt by UltraEdit editor. (B) Ctrl+R to bring up the Replace dialog box, input in the above Find What pane: ^p, input in the below Replace With pane: ,!^p . (^p is CRLF here.). After properly setting, then click "Replace All" button. You may click the "Help" button to get the help information if you need. (C) Replace "!" with "TreePath" by hand at end of the first line. (D) Save the file to RadminM.txt after processed. You can also refer to complete a similar modification with other editors. After this, user can Translate it to v3.0 by fore-mentioned "V2.0 to V3.0 RadminM.txt" menu. Then it can be used in the new version v3.0. (3). To prepare RadminM.txt by Notepad, UltraEdit, Excel, etc RadminM.txt can be prepared using Notepad, UltraEdit, Excel, etc. You can also import RadminM.txt to Excel to process. The procedure is: (A) Start Excel, then click the menu "Data|Import External Data|Import Data", select RadminM.txt file. (B) Text Import Wizard - Step 1 of 3, direct click "Next". (C) Text Import Wizard - Step 2 of 3, you must check the "Comma" delimiter and then click "Next". (D) Text Import Wizard - Step 3 of 3, you must set all 18 columns to text format. You should select the data columns in turn below Data preview, and then check the "Text" above Column data format. After properly setting, to click "Finish" and "OK" to complete successfully import. (E) The file must save as CSV format after processed. The file can be used for RadminM after direct renamed to RadminM.txt. 5. UnlockDesktop feature of v3.0 newly additional (1). The UnlockDesktop feature After "Full Control" connection has successed, it can unlock the remote desktop with the connection password if the remote desktop has locked and the focus is in the password input box, or lock first the remote desktop then unlock when remote PC run Radmin Server v3.5. To successfully use this feature, there must be conditions: remote PC has already logined, and the password for locked remote desktop as same as the password for conneced Radmin Server, and the focus of remote desktop is in the password input box. (2). Possible security risk Note, there may be plaintext password, if the Radmin Server is old version before v3.5, and the remote desktop has not locked before to unlock, and the focus of remote desktop is exactly on a text edit box. (3). UnlockDesktop setting User can singly prepare UnlockDesktop setting for every record. UnlockDesktop setting is saved in UnlockDesktop filed of every record in RadminM.txt. To be deliberate, this feature is not enabled by default. User can choose and use this feature according to the actual situation. User can choose disabled this feature(Blank filed), or "UnlockDesktop", or "LockThenUnlock" for every record. When this filed is blank, that is disabled this feature, and there wiil not be plaintext password. When this filed is “UnlockDesktop”, that is directly unlock remote desktop. That suit each versions of Radmin Server. But there may be plaintext password. When this filed is “LockThenUnlock”, that is locked first the remote desktop then unlocked if the remote desktop has not locked before to unlock. This will avoid to appear plaintext password. But it must use the Radmin.exe of Radmin Viewer 3.5, and it only suit to connect Radmin Server v3.5. It can not send the Win+L LockScreen combination key to the remote computer by old version before Radmin Viewer 3.5. It can not receive the Win+L LockScreen combination key by old version before Radmin Server 3.5. The possibility to appear plaintext password still exists. 6. Related settings and Multilanguage support (1). Settings file RadminM.ini User may select the RadminM's related settings by Settings Menu of the main menu. All RadminM's related settings is stored in file RadminM.ini. RadminM will automatically create if RadminM.ini is not exist. If the RadminM main window can not display, it maybe the settings is confusion, or abnormal shutdown. User may backup the file RadminM.ini and then delete it. After this, user can run RadminM normal. (2). Multilanguage support This program achieve multilingual support by INI file. Each language information is stored in an INI format file with .lng extension. Language files is text file to follow Unicode or ANSI formatted. We generally recommended to use Unicode format. This mode has more scalability, the user can very simply and easily add your own language file. The default language of this program is simplified Chinese, there is other English language file English.lng as example. If there is no external language file, RadminM use the built-in default language(Chinese) when the program starts. If there are any *.lng external languages under this program directory, RadminM will automatically load and list in the "Settings|Language" menu after the program starts. In this menu, the name of external language is used the filename of the language file. By choosed a language in the menu, users can dynamically switch to the new language interface without having to restart the program. The user's language selection will be automatically saved to RadminM.ini file. After closeing the program, RadminM will automatically use the new language interface selected by the user when the next start. Users can refer to the format and content of English.lng, and easily prepared to modify their own language files, such French.lng. Users only need to copy the prepared language file to this program directory. After restarting the program, RadminM will automatically load and list the new language added by the user (such French) in the "Settings|Language" menu. By choosed the new language in the menu, users can dynamically switch to the new language interface without having to restart the program. After closeing the program, RadminM will automatically use the new language interface selected by the user when the next start. Note, Intermediate of language file can not have blank lines. Blank lines will mean the end of the file, the items will not be able to find the translation after the blank line. If you need a blank line identification or separator, you can add english semicolon in front of blank line. That is a comment line. If you need leading or rear guide space, the string of language file may be contained with double quotes or single quotes.Or it need not quotation marks. This program's multilingual support features achieve by reference of Yonsm's way, interested users may visit the website http://yonsm.net/ini-language-engine/. (3). Use Radmin Help If user want to use Help->Radmin Help of this program, user need to copy the chm help file to Radmin35.chm in the RadminM directory. 7. Disclaimer Users can choose and use this program at their discretion. Please indicate the source if reproduced. The author does not assume any responsibility for all the consequences!
什么是实用技巧,就是那种能经常用得着的值得收藏起来的应用方法。本文 中笔者就将向大家介绍35种Windows操作系统技巧,招招实用,招招值得你把 他保存到你的电脑中或者把这篇文章的地址收藏到收藏夹里。   1、如何实现关机时清空页面文件   打开“控制面板”,单击“管理工具→本地安全策略→本地策略→安全 选项”,双击其中“关机:清理虚拟内存页面文件”一项,单击弹出菜单中 的“已启用”选项,单击“确定”即可。   2、如何自行配置Windows XP的服务   如果你是在单机使用Windows XP,那么很多服务组件是根本不需要的, 额外的服务程序影响了系统的速度,完全可将这些多余的服务组件禁用。单 击“开始→控制面板→管理工具→服务”,弹出服务列表窗口,有些服务已 经启动,有些则没有。我们可查看相应的服务项目描述,对不需要的服务予 以关闭。如“Alerter”,如果你未连上局域网且不需要管理警报,则可将其 关闭。   3、Smartdrv程序有什么作用   现象:在许多有关Windows XP安装的介绍文章中都提到:“如果在DOS下 安装Windows XP非常慢,肯定是安装前未运行Smartdrv.exe。我想问这个 Smartdrv.exe文件有什么饔?具体如何使用?   Smartdrv.exe这个文件对于熟悉DOS的朋友肯定很清楚,主要作用是为磁 盘文件读写增加高速缓存。大家知道内存的读写速度比磁盘高得多,如果将 内存作为磁盘读写的高速缓存可以有效提高系统运行效率。Smartdrv.exe这 个文件在Windows各个版本安装光盘中或是硬盘上的Windows/command/里都 有,只有几十KB,把这个文件复制到软盘下,启动系统后直接运行这个程序( 可以不加参数,该程序会自动根据内存大小分配适当的内存空间作为高速缓 存),再安装Windows XP即可。另外提醒大家,这个程序在安装完Windows后 ,不要运行,否则Windows可用内存将减少。   4、Win32k.sys是什么文件   现象:我刚装了Windows XP,可是接下去再装毒霸就发现病毒,位于 F:WINNT SYSTEM32里的Win32k.sys文件,删又不可删,隔离又不行,在 Windows 98下或DOS下删就会导致Windows XP不可启?,请问该文件是干什么 用的,有什么方法解决?   这个文件是Windows XP多用户管理的驱动文件。在 X:WindowsSystem32Dllcache目录下有此文件的备份。只要将此备份拷到 X:WindowsSystem32下替代带病毒的文件即可。做一张Windows 98启动盘,并 将Attrib.exe文件拷入软盘,此文件在装有Windows 98的机器上的 X:WindowsCommand目录下。在BIOS的Advanced BIOS Features 中将启动顺序 调整为从A盘启动,进入DOS后,进入X:WindowsSystem32目录,输入Attrib -s -h -r win32k.sys,再进入X:WindowsSystem32dllcache目录下输入同样 命令,再用copy win32k.sys X:windowsSystem32覆盖原文件,再重新启动即 可。   5、Windows XP的开机菜单有什么含义   现象:最近我安装了Windows XP操作系统,我知道在启动时按F8键或当 计算机不能正常启动时,就会进入Windows XP启动的高级选项菜单,在这里 可以选择除正常启动外的8种不同的模式启动Windows XP。请问这些模式分别 代表什么意思?   (1)安全模式:选用安全模式启动Windows XP时,系统只使用一些最基本 的文件和驱动程序启动。进入安全模式是诊断故障的一个重要步骤。如果安 全模式启动后无法确定问题,或者根本无法启动安全模式,那你就可能需要 使用紧急修复磁盘ERD的功能修复系统了。   (2)网络安全模式:和安全模式类似,但是增加了对网络连接的支持。在 局域网环境中解决Windows XP的启动故障,此选项很有用。   (3)命令提示符的安全模式:也和安全模式类似,只使用基本的文件和驱 动程序启动Windows XP。但登录后屏幕出现命令提示符,而不是Windows桌面 。   (4)启用启动日志:启动Windows XP,同时将由系统加载的所有驱动程序 和服务记录到文件中。文件名为ntbtlog.txt,位于Windir目录中。该日志对 确定系统启动问题的准确原因很有用。   (5)启用VGA模式:使用基本VGA驱动程序启动Windows XP。当安装了使 Windows XP不能正常启动的新显卡驱动程序,或由于刷新频率设置不当造成 故障时,这种模式十分有用。当在安全模式下启动Windows XP时,只使用最 基本的显卡驱动程序。   (6)最近一次的正确配置:选择“使用‘最后一次正确的配置’启动 Windows XP”是解决诸如新添加的驱动程序与硬件不相符之类问题的一种方 法。用这种方式启动,Windows XP只恢复注册表项 HklmSystemCurrentControlSet下的信息。任何在其他注册表项中所做的更改 均保持不变。   (7)目录服务恢复模式:不适用于Windows XP Professional。这是针对 Windows XP Server操作系统的,并只用于还原域控制器上的Sysvol目录和 Active Directory目录服务。   (8)调试模式:启动Windows XP,同时将调试信息通过串行电缆发送到其 他计算机。如果正在或已经使用远程安装服务在你的计算机上安装Windows XP,可以看到与使用远程安装服务恢复系统相关的附加选项。 6、如何彻底删除XP   现象:我装了Windows Me和Windows XP双系统,都是FAT32格式。C盘装 Windows Me,E盘装Windows XP。昨天,Windows XP系统丢失了SYSTEM32.DLL ,启动不了。于是我在进入Windows Me系统内,在E盘直接删除Windows XP。 但是,每次开机都出现多系统启动菜单,供选择。我该怎样才可以彻底删除 XP?   用一张Windows 9x/Me的启动盘启动,在“A:”下输入“SYS C:”,给C 盘重新传系统即可。   7、如何处理Windows XP不能自动关机现象   现象:我的Windows XP有时候不能自动关闭电脑,请问应该怎么办?   安装完Windows XP之后,有些计算机在单击关闭电脑之后并不能自动关 闭,而需像以前的AT电源一样手动关闭。这主要是Windows XP未启用高级电 源管理。修正方法:单击“开始→控制面板→性能和维护→电源选项”,在弹 出的电源选项属性设置窗口中,单击“高级电源管理”并勾选“启用高级电 源管理支持”。   8、如何创建“锁定计算机”的快捷方式   因有急事而需要离开,但又不希望电脑进行系统注销,该怎么办?你完 全可以通过双击桌面快捷方式来迅速锁定键盘和显示器,且无需使用 “Ctrl+Alt+Del”组合键或屏幕保护程序。操作方法:在桌面上单击鼠标右 键,在随后出现的快捷菜单上指向“新建”,并选择“快捷方式”。接着, 系统便会启动创建快捷方式向导。请在文本框中输入下列信息: rundll32.exe user32.dll, LockWorkStation,单击“下一步”。输入快捷 方式名称。你可将其命名为“锁定工作站”或选用你所喜欢的任何名称,单 击“完成”。你还可对快捷方式图标进行修改(我最喜欢的一个是由 Shell32.dll所提供的挂锁图标)。如需修改快捷方式图标,请执行下列操作 步骤:右键单击“快捷方式”,并在随后出现的快捷菜单上选择“属性”。 选择“快捷方式”选项卡,接着,单击“更改图标”按钮。在以下文件中查 找图标文本框中,输入Shell32.dll,单击“确定”。从列表中选择所需图标 ,并单击“确定”。你还可为快捷方式指定一组快捷键,比如“Ctrl+Alt+L ”。这种做法虽然只能帮助你节省一次击键,但却可使操作变得更加灵便。 如需添加快捷键组合,请执行下列操作步骤:右键单击“快捷方式”,并在 随后出现的快捷菜单上选择“属性”。选择“快捷方式”选项卡,在快捷键文 本框中,输入任何键值,而Windows XP则会将其转换成快捷键组合(一般应采 取Ctrl+Alt+任意键的形式)。如欲锁定键盘和显示器,只需双击相关快捷方 式或使用所定义的快捷键即可。   9、如何调整桌面图标颜色质量   在桌面空白处单击鼠标右键,在打开的“显示 属性”对话框中选择“ 设置”选项卡,通过“颜色质量”下拉列表你可以调整计算机的颜色质量。 你也可以通过编辑注册表来调整桌面图标的颜色质量,具体操作步骤:   打开注册表编辑器,进入HKEY_CURRENT_ USERControl PanelDesktopWindowMetrics子键分支,双击Shell Icon BPP键值项,在打开 的“编辑字符串”对话框中,“数值数据”文本框内显示了桌面图标的颜色 参数,系统默认的图标颜色参数为16。这里提供的可用颜色参数括 :4表 示16种颜色,8表示256种颜色,16表示65536种颜色,24表示1600万种颜色, 32表示True Color(真彩色)。你可以根据自己的不需要选择和设置你的桌面 图标颜色参数。单击“确定”关闭“编辑字符串”对话框。注销当前用户并 重新启动计算机后设置就生效。   在桌面空白处单击鼠标右键,在打开的“显示属性”对话框中选择“外 观”选项卡,在这里你可以方便地对整个桌面、窗口或者其他项目的字体和 图标大小进行调整。   不过,用这种方式设置图标大小有一定局限性,比如,用户只能选择系 统已经提供的桌面大小方案,不能自己任意设置桌面图标的大小。如果你想 随心所欲地对桌面图标大小进行调整,可以通过编辑注册表来达到目的。具 体操作步骤是: 打开注册表编辑器,进入HKEY_CURRENT_ USERControl PanelDesktopWindowMetrics子键分支,双击Shell Icon Size键值项,在打 开的“编辑字符串”对话框中,“数值数据”文本框内显示了桌面图标的大 小参数,系统默认29,用户可以根据自己的需要设置参数大小(参数越大,桌 面图标也越大),然后单击“确定”关闭“编辑字符串”对话框。当你注销当 前用户并重新启动计算机后设置就生效。   10、如何对系统声音进行选择与设置   系统声音的选择与设置就是为系统中的事件设置声音,当事件被激活时 系统会根据用户的设置自动发出声音提示用户。 选择系统声音的操作步骤如 下:   (1)在“控制面板”窗口中双击“声音及音频设备”图标,打开“声音及 音频设备”属性对话框,它提供了检查配置系统声音环境的手段。这个对话 框含了音量、声音、音频、语声和硬件共5个选项卡。   (2)在“声音”选项卡中,“程序事件”列表框中显示了当前Windows XP 中的所有声音事件。如果在声音事件的前面有一个“小喇叭”的标志,表示 该声音事件有一个声音提示。要设置声音事件的声音提示,则在“程序事件 ”列表框中选择声音事件,然后从“声音”下拉列表中选择需要的声音文件 作为声音提示。   (3)用户如果对系统提供的声音文件不满意,可以单击“浏览”按钮,弹 出浏览声音对话框。在该对话框中选定声音文件,并单击“确定”按钮,回 到“声音”选项卡。   (4)在Windows XP中,系统预置了多种声音方案供用户选择。用户可以从 “声音方案”下拉表中选择一个方案,以便给声音事件选择声音。   (5)如果用户要自己设置配音方案,可以在“程序事件”列表框中选择需 要的声音文件并配置声音,单击“声音方案”选项组中的“另存为”按钮, 打开“将方案存为”对话框。在“将此配音方案存为”文本框中输入声音文 件的名称后,单击“确定”按钮即可。如果用户对自己设置的配音方案不满 意,可以在“声音方案”选项组中,选定该方案,然后单击“删除”按钮, 删除该方案。   (6)选择“音量”选项卡,打开“音量”选项卡。你可以在“设备音量” 选项组中,通过左右调整滑块改变系统输出的音量大小。如果希望在任务栏 中显示音量控制图标,可以启用“将音量图标放入任务栏”复选框。   (7)你想调节各项音频输入输出的音量,单击“设备音量”区域中的“高 级”按钮,在弹出的“音量控制”对话框里调节即可。这里列出了从总体音 量到CD唱机、PC扬声器等单项输入输出的音量控制功能。你也可以通过选择 “静音”来关闭相应的单项音量。   (8)单击“音量”选项卡中的“扬声器设置”区域中的“高级”按钮后, 在弹出的“高级音频属性”对话框你可以为自己的多媒体系统设定最接近你 的硬件配置的扬声器模式。   (9)在“高级音频属性”对话框中选择“性能”选项卡,这里提供了对音 频播放及其硬件加速和采样率转换质量的调节功能。要说明的是,并不是所 有的选项都是越高越好,你需要根据自己的硬件情况进行设定,较好的质量 通常意味着较高的资源占有率。   设置完毕后,单击“确定”按钮保存设置。 11、如何分配临时管理权限   许多程序在安装过程中都要求你具备管理权限。这里介绍了一种以普通 用户身份登录的情况下,临时为自己分配管理权限的简单方法。在右键单击 程序安装文件的同时按住“Shift”键。在随后出现的快捷菜单中单击“运行 方式”,输入具有相应管理权限的用户名和密码。这种方式对于开始菜单上 的应用程序同样适用。   12、如何关闭Windows XP的自动播放功能   一旦你将多媒体光盘插入驱动器,自动运行就会从驱动器中读取数据, 这会造成程序的设置文件和在音频媒体上的音乐立即开始。你可以用下面这 个办法关闭这个功能:打开“开始→运行”,在对话框中输入“gpedit.msc ”命令,在出现“组策略”窗口中依次选择“在计算机配置→管理模板→系 统”,双击“关闭自动播放”,在“设置”选项卡中选“已启用”选项,最 后单击“确定”按钮即可。   13、如何恢复被破坏的系统引导文件   现象:我只安装了Windows XP系统,但在开机时显示“BOOT.INI非法, 正从C:WINDOWS启动”,然后就进入了启动状态,并且也能照样工作,请问 这是怎么一回事,能否在不重装系统的情况下使系统恢复到正常启动状态?   出现这种情况是因为C盘下面的“Boot.ini”文件被破坏了。但是由于你 的机器中只有一个操作系统,当然它就是默认的操作系统,即使“Boot.ini ”文件被破坏了,也将自动地引导该系统进行装载。   解决的办法是建立一个“Boot.ini”文件即可。其内容为:   [Boot Loader]   Default=C:   [Operating Systems]   C:=“Microsoft Windows xp”   14、如何恢复输入法图标   现象:本人使用Windows XP中文版,不慎使任务栏隐藏了输入法图标, 请问该如何恢复输入法图标。   打开“控制面板”,双击“区域和语言选项”图标,进入“区域和语言 选项”对话框,选择“语言”选项卡,单击“详细信息”按钮,在弹出的对 话框中单击“语言栏”按钮,在接着出现的“语言栏设置”对话框中勾选“ 在桌面上显示语言栏”选项。这时候桌面会出现语言栏,单击右上角的最小 化按钮,输入法图标就回到任务栏中去了。   15、如何恢复误删除的boot.ini文件   现象:我第一次装Windows XP时,重启后没有任何问题。但是由于误操 作,删掉了C盘目录下的一个文件(文件名是:boot.ini),然后再重启时每次 都显示两行字:“boot.ini是非法的。现在正从C:/Windows/下启动”。然后 可以顺利进入Windows XP。但是速度明显慢了,比没删这个文件时慢了很多 ,而且,每次都要看见那两行字。请问如何修复?   boot.ini是系统启动时,需要查询的一个系统文件,它告诉启动程序本 计算机有几个操作系统、各系统的位置在哪里等信息。重新恢复的方法如下 :单击“开始”菜单,依次指向“程序→附件→记事本”,打开“记事本” ,在记事本里输入:   [boot loader]   timeout=30   default=multi(0)disk(0)rdisk(0)partition(1) Windows   [operating systems]   multi(0)disk(0)rdisk(0)partition(1)Windows=“Microsoft Windows XP Professional” /fastdetect   然后将它保存为名字是boot.ini的文件,并将此文件保存到C盘的根目录 下即可。   16、如何加快Windows XP窗口显示速度   我们可以通过修改注册表来改变窗口从任务栏弹出,以及最小化回归任 务栏的动作,步骤如下:打开注册表编辑器,找到HKEY_ CURRENT_USERControl PanelDesktop WindowMetrics子键分支,在右边的窗 口中找到MinAnimate键值,其类型为REG_SZ,默认情况下此健值的值为1,表 示打开窗口显示的动画,把它改为0,则禁止动画的显示,接下来从开始菜单 中选择“注销”命令,激活刚才所作的修改即可。   17、如何解决Windows XP关机出现英文提示   现象:我的Windows XP关机时会出现一个进度条,并提示“To return to windows and check the status of the program click cancel if you choose to end the program immediately you will lose any unsaved data. To end the program now click end.”然后就正常关机,但有时却不 出现,我想会不会与我的东方影都3的记忆播放有关,但关闭记忆播放功能也 无效,请问如何办?   这是因为你关闭Windows XP时还有程序在运行,请在关机之前保存并关 闭一切应用程序。如果直接单击“End”按钮,那么未保存的任务会丢失,这 时可以按“Ctrl+Alt+Del”打开任务管理器,然后关闭应用程序。如果在任 务管理器列表中为空,那么就在“系统进程”中将它关闭。如果不进行任何 操作,那么系统将在进度条到头时自动关闭未关闭的程序并关闭系统。请你 在关机之前关闭一切应用程序、系统驻留程序就不会出现这个提示了。当你 确定没有任何需要保存的任务时,可以不必理会此对话框。 18、如何控制桌面的图标显示   通常很多用户还是习惯于在桌面上保留“我的文档”及其他经常访问文 件夹快捷方式以及经常使用的程序快捷方式。如果你想在桌面上显示“我的 电脑”、“我的文档”、“网上邻居”、IE浏览器的快捷方式图标,只需进 行如下操作 :在桌面单击鼠标右键,在右键菜单中选择“属性”命令,在打 开的“显示 属性”对话框中选择“桌面”选项卡,单击“自定义桌面”按钮 ,打开“桌面”项目对话框。在“常规”选项卡的“桌面图标”栏中选择所 需项目的复选框,然后单击“确定”返回上一级对话框,再单击“应用”按 钮即可。   19、如何删除Windows XP的“更新”选项   对于大多数的用户来说,Windows XP的Windows Update功能似乎作用不 大,我们可以去掉它,操作步骤如下:打开注册表编辑器,找到 HKEY_CURRENT_USERSoftware MicrosoftWindowsCurrentVersionPoliciesExplorer子键分支,选择“编辑 ”菜单下的“新建”命令,新建一个类型为REG_DWord的值,名称为 NoCommonGroups,双击新建的NoCommon Groups子键,在“编辑字符串”文本 框中输入键值“1”,然后单击“确定”按钮并重新启动系统即可。   20、如何设置音频属性   打开“控制面板”,双击“声音及音频设备”图标,在“声音及音频设 备 属性”对话框中,选择“音频”选项卡,在该选项卡中,你可以看到与“ 声音播放”、“录音”和“MIDI音乐播放”有关的默认设备。当你的计算机 上安装有多个音频设备时,就可以在这里选择应用的默认设备,并且还可以 调节其音量及进行高级设置。   进行音频设置的操作步骤如下:   (1)在“声音播放”选项组中,从“默认设备”下拉列表中选择声音播放 的首选设备,一般使用系统默认设备。   (2)用户如果希望调整声音播放的音量,可以单击“音量控制”窗口,在 该窗口中,将音量控制滑块上下拖动即可调整音量大小。   (3)在该窗口中,用户可以为不同的设备设置音量。例如,当用户在播放 CD时,调节“CD音频”选项组中的音量控制滑块,可以改变播放CD的音量; 当用户播放MP3和WAV等文件时,用户还可以在“音量控制”窗口进行左右声 道的平衡、静音等设置。   (4)用户如果想选择扬声器或设置系统的播放性能,可以单击“声音播放 ”选项组中的“高级”按钮,打开 “高级音频属性”对话框,在“扬声器” 和“性能”选项卡可以分别为自己的多媒体系统设定最接近你的硬件配置的 扬声器模式及调节音频播放的硬件加速功能和采样率转换质量。   (5)在“录音”选项组中,可以从“默认设备”下拉列表中选择录音默认 设备。单击“音量”按钮,打开 “录音控制”对话窗口。用户可以在该窗口 中改变录音左右声道的平衡状态以及录音的音量大小。   (6)在“MIDI音乐播放”选项组中,从“默认设备”下拉列表中选择 MIDI音乐播放默认设备。单击“音量”按钮,打开“音量控制”窗口调整音 量大小。   (7)如果用户使用默认设备工作,可启用“仅使用默认设备”复选框。设 置完毕后,单击“应用”按钮保存设置。   21、如何设置语声效果   用户在进行语声的输入和输出之前,应对语声属性进行设置。在“声音 和音频设备 属性”对话框中,选择“语声”选项卡,在该选项卡中,用户不 但可以为“声音播放”和“录音”选择默认设备,而且还可调节音量大小及 进行语声测试。   (1)在“声音播放”选项组中,从“默认设备”下拉列表中选择声音播放 的设备,单击“音量”按钮,打开“音量控制”窗口调整声音播放的音量。 要设置声音播放的高级音频属性,单击“高级”按钮完成设置。   (2)在“录音”选项组中,从“默认设备”下拉列表中选择语声捕获的默 认设备,单击“音量”按钮,打开“录音控制”窗口调整语声捕获的音量。 要设置语声捕获的高级属性,单击“高级”按钮完成设置。   (3)单击“测试硬件”按钮,打开 “声音硬件测试向导”对话框,该向 导测试选定的声音硬件是否可以同时播放声音和注册语声。注释:要确保测 试的准确性,在测试之前必须关闭使用麦克风的所有程序,如语声听写或语 声通信程序。   (4)单击“下一步”按钮,向导开始测试声音硬件,并通过对话框显示检 测进度。   (5)检测完毕后,打开“正在完成声音硬件测试向导”对话框,通告用户 检测结果,单击“完成”按钮关闭对话框。   (6)设置完毕后,单击“确定”按钮保存设置。   22、如何手动使计算机进入休眠状态   现象:请问如何用手动方式使Windows XP的计算机进入休眠状态?   休眠功能是Windows XP提供的一项非常酷的特性,它“隐藏”在Shut Down(关机)对话框中。如果你的计算机支持休眠功能,那么借助以下技巧, 可通过手动方式使其进入休眠状态。 如需以手动方式使你的计算机进入休眠 状态,请执行以下操作步骤: 选择“开始→关闭计算机”,在关闭Windows 对话框中,选择“休眠”。当你的计算机进入休眠状态后,内存中的内容将 保存到硬盘上。当你将计算机唤醒时,进入休眠状态前打开的所有程序与文 档都将恢复到桌面上。如需在你的计算机上激活休眠支持特性,请执行以下 操作步骤:你必须以管理员、Administrators或Power Users组成员的身份登 录。如果你的计算机与某个网络建立了连接,那么网络策略设置可能会导致 这一操作过程无法实现。单击“开始→控制面板→性能和维护→电源选项” ,选择“休眠”选项卡,选中“启用休眠”,单击“确定”关闭电源选项对 话框。如果休眠选项卡不可用,则说明你的硬件设备无法支持该特性。   23、如何提高Windows XP的启动速度   使用微软提供的“Bootvis”软件可以有效地提高Windows XP的启动速度 。这个工具是微软内部提供的,专门用于提升Windows XP启动速度。下载解 压缩到一个文件夹下,并在“Options”选项中设置使用当前路径。之后从“ Trace”选项下拉菜单中选择跟踪方式。该程序会引导Windows XP重新启动, 并记录启动进程,生成相关的BIN文件。之后从Bootvis中调用这个文件,从 Trace项下拉菜单中选择“Op-timizesystem”命令即可。   Windows XP虽然提供了一个非常好的界面外观,但这样的设置也在极大 程度上影响了系统的运行速度。如果你的电脑运行起来速度不是很快,建议 将所有的附加桌面设置取消,也就是将Windows XP的桌面恢复到Windows 2000样式。   设置的方法非常简单:在“我的电脑”上单击鼠标右键,选择“属性” ,在“高级”选项卡中单击“性能”项中的“设置”按钮,在关联界面中选 择“调整为最佳性能”复选框即可。   此外,一个对Windows XP影响重大的硬件就是内存。使用256MB内存运行 Windows XP会比较流畅,512MB的内存可以让系统运行得很好。如果条件允许 ,最好增大内存。   24、如何为Windows XP减肥   Windows XP比以往的任何Windows系统都要庞大,其硬盘空间需求1.5GB 。虽然相对于能跑Windows XP的主流电脑来说,一般都拥有10GB以上的硬盘 ,但一些电脑发烧友有时还是乐于减少Windows XP的体积。   (1)删除驱动备份 :WindowsDriver cachei386目录下的Driver.cab文件 (73MB) 。   (2)删除Help文档(减掉40多MB) 。   (3)删除WindowsIme下不用的输入法(日文、韩文、约80MB) 。   (4)把我的文件、IE的临时文件夹转到其他硬盘(分区) 。   (5)把虚拟内存转到其他硬盘(分区)。   25、如何卸载Windows XP   现象:我原来使用的操作系统是Windows 98,最近听说Windows XP非常 好,就安装了该系统。第一次安装是从Windows 98中安装,装完后觉得不太 好,就格式化Windows XP的分区后重新从DOS安装到D盘,安装完后发现多重 启动菜单有三项(第一次装的Windows XP那一项还在),请问如何删除多余的 一项?另外,如果我要删除Windows XP,除了格式化D盘外,怎样才能将它彻 底删除?   Windows 98和Windows XP双系统的启动菜单是由C盘根目录下的一个文件 来控制的,通过修改该文件可以更改启动菜单。要想删除多余的Windows XP 项目,你可以打开C盘根目录下的boot.ini文件,其中有两行重复的“multi (0)…”,删除其中一行即可。要想彻底删除Windows XP,除了格式化它所在 分区之外,你还必须按下面的方法删除多重启动菜单和多余的系统文件:   (1)制作一张Windows 98启动盘,并将Windows 98下的sys.com文件拷入 该系统盘。   (2)用该启动盘启动,在A:>下执行sys C:命令。   (3)删除C盘根目录下多余的文件,这些文件括:boot.ini、 bootfont.bin、bootsect.dos、ntdetect.com、pagefile.sys等。
文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; ◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。 本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。 immortality按:请用ctrl+f在本页中查找某一部分的内容或某一命令的用法。 -------------------------------------------------------------------------------- Linux必学的60个命令(1)-安装与登陆命令 login 1.作用 login的作用是登录系统,它的使用权限是所有用户。 2.格式 login [name][-p ][-h 主机名称] 3.主要参数 -p:通知login保持现在的环境参数。 -h:用来向远程登录的之间传输用户名。 如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: Manddrake Linux release 9.1(Bamboo) for i586 renrel 2.4.21-0.13mdk on i686 / tty1 localhost login:root password: 上面代码中,第一行是Linux发行版本号,第二行是内核版本号和登录的虚拟控制台,我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也不移动。 登录后会看到下面这个界面(以超级用户为例): [root@localhost root]# last login:Tue ,Nov 18 10:00:55 on vc/1 上面显示的是登录星期、月、日、时间和使用的虚拟控制台。 4.应用技巧 Linux 是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 例如,用户登录后,按一下“Alt+ F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+ F1”键,就可以回到第一个虚拟控制台。一个新安装的Linux系统允许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。 shutdown 1.作用 shutdown命令的作用是关闭计算机,它的使用权限是超级用户。 2.格式 shutdown [-h][-i][-k][-m][-t] 3.重要参数 -t:在改变到其它运行级别之前,告诉init程序多久以后关机。 -k:并不真正关机,只是送警告信号给每位登录者。 -h:关机后关闭电源。 -c:cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统信息。 4.命令说明 shutdown 命令可以安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux系统,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。 halt 1.作用 halt命令的作用是关闭系统,它的使用权限是超级用户。 2.格式 halt [-n] [-w] [-d] [-f] [-i] [-p] 3.主要参数说明 -n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。 -w:并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录。 -f:没有调用shutdown,而强制关机或重启。 -i:关机(或重启)前,关掉所有的网络接口。 -f:强迫关机,不呼叫shutdown这个指令。 -p: 当关机的时候顺便做关闭电源的动作。 -d:关闭系统,但不留下纪录。  4.命令说明 halt 就是调用shutdown -h。halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。若系统的运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代。  reboot 1.作用 reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。 2.格式 reboot [-n] [-w] [-d] [-f] [-i] 3.主要参数 -n: 在重开机前不做将记忆体资料写回硬盘的动作。 -w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。 -d: 不把记录写到/var/log/wtmp文件里(-n这个参数含了-d)。 -i: 在重开机之前先把所有与网络相关的装置停止。 install 1.作用 install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。 2.格式 (1)install [选项]... 来源 目的地 (2)install [选项]... 来源... 目录 (3)install -d [选项]... 目录... 在前两种格式中,会将复制至或将多个文件复制至已存在的,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。 3.主要参数 --backup[=CONTROL]:为每个已存在的目的地文件进行备份。 -b:类似 --backup,但不接受任何参数。 -c:(此选项不作处理)。 -d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。 -D:创建前的所有主目录,然后将复制至 ;在第一种使用格式中有用。 -g,--group=组:自行设定所属组,而不是进程目前的所属组。 -m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。 -o,--owner=所有者:自行设定所有者 (只适用于超级用户)。 -p,--preserve-timestamps:以文件的访问/修改时间作为相应的目的地文件的时间属性。 -s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。 -S,--suffix=后缀:自行指定备份文件的。 -v,--verbose:处理每个文件/目录时印出名称。 --help:显示此帮助信息并离开。 --version:显示版本信息并离开。 mount 1.作用 mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir 3.主要参数 -h:显示辅助信息。 -v:显示信息,通常和-f用来除错。 -a:将/etc/fstab中定义的所有文件系统挂上。 -F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。 -f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。 -t vfstype:显示被加载文件系统的类型。 -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 4.应用技巧 在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。 (1)Linux可以识别的文件系统 ◆ Windows 95/98常用的FAT 32文件系统:vfat ; ◆ Win NT/2000 的文件系统:ntfs ; ◆ OS/2用的文件系统:hpfs; ◆ Linux用的文件系统:ext2、ext3; ◆ CD-ROM光盘用的文件系统:iso9660。 虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。 (2)确定设备的名称 在Linux 中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev/hda1这个 IDE设备,hd是Hard Disk(硬盘)的,sd是SCSI Device,fd是Floppy Device(或是Floppy Disk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、 hdd。hda1中的“1”代表hda的第一个硬盘分区 (partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查 /var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。 (3)查找挂接点 在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录。建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat): 软盘 ===>mount -t ext2 /dev/fd0 /mnt/floppy cdrom ===>mount -t iso9660 /dev/hdc /mnt/cdrom SCSI cdrom ===>mount -t iso9660 /dev/sdb /mnt/scdrom SCSI cdr ===>mount -t iso9660 /dev/sdc /mnt/scdr 不过目前大多数较新的Linux发行版本括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。 umount 1.作用 umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 unmount -a [-fFnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir 3.使用说明 umount 命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD—ROM,这样就不能用CD- ROM面板上的Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸装它。仅当无用户正在使用光盘时,该命令才会成功。该命令括了将带有当前工作目录当作该光盘中的目录的终端窗口。 chsh 1.作用 chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。 2.格式 chsh [ -s ] [ -list] [ --help ] [ -v ] [ username ] 3.主要参数 -l:显示系统所有Shell类型。 -v:显示Shell版本号。 4.应用技巧 前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下: Changing fihanging shell for cao Password: New shell [/bin/bash]: /bin/tcsh 上面代码中,[ ]内是目前使用的Shell。普通用户只能修改自己的Shell,超级用户可以修改全体用户的Shell。要想查询系统提供哪些Shell,可以使用chsh -l 命令,见图1所示。 图1 系统可以使用的Shell类型 从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用是退出系统,它的使用权限是所有用户。 2.格式 exit 3.参数 exit命令没有参数,运行后退出系统进入登录界面。 last 1.作用 last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。 2.格式 1ast[—n][-f file][-t tty] [—h 节点][-I —IP][—1][-y][1D] 3.主要参数 -n:指定输出记录的条数。 -f file:指定用文件file作为查询用的log文件。 -t tty:只显示指定的虚拟控制台上登录情况。 -h 节点:只显示指定的节点上的登录情况。 -i IP:只显示指定的IP上登录的情况。 -1:用IP来显示远端地址。 -y:显示记录的年、月、日。 -ID:知道查询的用户名。 -x:显示系统关闭、用户登录和退出的历史。 动手练习 上面介绍了Linux安装和登录命令,下面介绍几个实例,动手练习一下刚才讲过的命令。 1.一次运行多个命令 在一个命令行中可以执行多个命令,用分号将各个命令隔开即可,例如: #last -x;halt 上面代码表示在显示系统关闭、用户登录和退出的历史后关闭计算机。 2.利用mount挂装文件系统访问Windows系统 许多Linux发行版本现在都可以自动加载Vfat分区来访问Windows系统,而Red Hat各个版本都没有自动加载Vfat分区,因此还需要进行手工操作。 mount 可以将Windows分区作为Linux的一个“文件”挂接到Linux的一个空文件夹下,从而将Windows的分区和/mnt这个目录联系起来。因此,只要访问这个文件夹就相当于访问该分区了。首先要在/mnt下建立winc文件夹,在命令提示符下输入下面命令: #mount -t vfat /dev/hda1 /mnt/winc 即表示将Windows的C分区挂到Liunx的/mnt/winc目录下。这时,在/mnt/winc目录下就可以看到Windows中C盘的内容了。使用类似的方法可以访问Windows系统的D、E盘。在Linux系统显示Windows的分区一般顺序这样的:hda1为C盘、hda5为D盘、 hda6为E盘……以此类推。上述方法可以查看Windows系统有一个很大的问题,就是Windows中的所有中文文件名或文件夹名全部显示为问号 “?”,而英文却可以正常显示。我们可以通过加入一些参数让它显示中文。还以上面的操作为例,此时输入命令: #mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc 现在它就可以正常显示中文了。 3.使用mount加挂闪盘上的文件系统 在Linux下使用闪盘非常简单。Linux对USB设备有很好的支持,当插入闪盘后,闪盘被识别为一个SCSI盘,通常输入以下命令: # mount /dev/sda1 /usb 就能够加挂闪盘上的文件系统。 小知识 Linux命令与Shell 所谓Shell,就是命令解释程序,它提供了程序设计接口,可以使用程序来编程。学习Shell对于Linux初学者理解Linux系统是非常重要的。 Linux系统的Shell作为操作系统的外壳,为用户提供了使用操作系统的接口。Shell是命令语言、命令解释程序及程序设计语言的统称,是用户和 Linux内核之间的接口程序。如果把Linux内核想象成一个球体的中心,Shell就是围绕内核的外层。当从Shell或其它程序向Linux传递命令时,内核会做出相应的反应。Shell在Linux系统的作用和MS DOS下的COMMAND.COM和Windows 95/98 的 explorer.exe相似。Shell虽然不是系统核心的一部分,只是系统核心的一个外延,但它能够调用系统内核的大部分功能。因此,可以说 Shell是Unux/Linux最重要的实用程序。 Linux中的Shell有多种类型,其中最常用的是Bourne Shell(sh)、C Shell(csh)和Korn Shell(ksh)。大多数Linux发行版本缺省的Shell是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与Bourne Shell完全向后兼容,并且在Bourne Shell的基础上增加了很多特性。bash放在/bin/bash中,可以提供如命令补全、命令编辑和命令历史表等功能。它还含了很多C Shell和Korn Shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。Linux系统中200多个命令中有40个是bash的内部命令,主要括 exit、less、lp、kill、 cd、pwd、fc、fg等。 -------------------------------------------------------------------------------- Linux必学的60个命令(2)-文件处理命令 Linux 系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。 file 1.作用 件内容判断文件类型,使用权限是所有用户。 2.格式 file通过探测文 file [options] 文件名 3.[options]主要参数 -v:在标准输出后显示版本信息,并且退出。 -z:探测压缩过的文件类型。 -L:允许符合连接。 -f name:从文件namefile中读取要分析的文件名列表。 4.简单说明 使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。 5.应用实例 如果我们看到一个没有后缀的文件grap,可以使用下面命令: $ file grap grap: English text 此时系统显示这是一个英文文本文件。需要说明的是,file命令不能探测括图形、音频、视频等多媒体文件类型。 mkdir 1.作用 mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户。 2.格式 mkdir [options] 目录名 3.[options]主要参数 -m, --mode=模式:设定权限,与chmod类似。 -p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误。 -v, --verbose:每次创建新目录都显示信息。 --version:显示版本信息后离开。 4.应用实例 在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”。假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限),那么可以使用以下命令: $ mkdir -m 777 tsk grep 1.作用 grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式 grep [options] 3.主要参数 [options]主要参数: -c:只输出匹配行的计数。 -I:不区分大小写(只适用于单字符)。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出含匹配字符的文件名。 -n:显示匹配行及行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不含匹配文本的所有行。 pattern正则表达式主要参数: \:忽略正则表达式中特殊字符的原有含义。 ^:匹配正则表达式的开始行。 $: 匹配正则表达式的结束行。 \:到匹配正则表达式的行结束。 [ ]:单个字符,如[A]即A符合要求 。 [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。 。:所有的单个字符。 * :有字符,长度可以为0。 正则表达式是Linux/Unix系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符 “*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。 4.应用实例 查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]\{3 \}\.[0-0\{3\}\。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。 $grep '[0-9 ]\{3 \}\.[0-0\{3\}\' ipfile 补充说明,grep家族还括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。 dd 1.作用 dd命令用来复制文件,并根据参数将数据转换和格式化。 2.格式 dd [options] 3.[opitions]主要参数 bs=字节:强迫 ibs=及obs=。 cbs=字节:每次转换指定的。 conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。 count=块数目:只复制指定的输入数据。 ibs=字节:每次读取指定的。 if=文件:读取内容,而非标准输入的数据。 obs=字节:每次写入指定的。 of=文件:将数据写入,而不在标准输出显示。 seek=块数目:先略过以obs为单位的指定的输出数据。 skip=块数目:先略过以ibs为单位的指定的输入数据。 4.应用实例 dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘: $ rdev vmlinuz /dev/hda $dd if=vmlinuz of=/dev/fd0 上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。 find 1.作用 find命令的作用是在目录中搜索文件,它的使用权限是所有用户。 2.格式 find [path][options][expression] path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。 3.主要参数 [options]参数: -depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。 -maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。 -mindepth levels:表示至少查找到开始目录的第level层子目录。 -mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。 -version:打印版本。 [expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。 —name:支持统配符*和?。 -atime n:搜索在过去n天读取过的文件。 -ctime n:搜索在过去n天修改过的文件。 -group grpoupname:搜索所有组为grpoupname的文件。 -user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。 -size n:搜索文件大小是n个block的文件。 -print:输出搜索结果,并且打印。 4.应用技巧 find命令查找文件的几种方法: (1)根据文件名查找 例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令: find / -name lilo.conf find命令后的“/”表示搜索整个硬盘。 (2)快速查找文件 根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令: find /etc -name smb.conf 这样,使用“快速查找文件”方式可以缩短时间。 (3)根据部分文件名查找方法 有时我们知道只某个文件含有abvd这4个字,那么要查找系统中所有含有这4个字符的文件可以输入下面命令: find / -name '*abvd*' 输入这个命令以后,Linux系统会将在/目录中查找所有的含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。 (4) 使用混合查找方式查找文件 find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。 find /etc -size +500000c -and -mtime +1 mv 1.作用 mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。 2.格式 mv[options] 源文件或目录 目标文件或目录 3.[options]主要参数 -i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答“y”或“n”,这样可以避免误覆盖文件。 -f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。 4.应用实例 (1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中: $ mv /usr/cbu/ * . (2)将文件cjh.txt重命名为wjz.txt: $ mv cjh.txt wjz.txt  ls 1.作用 ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户。 2.格式 ls [options][filename] 3.options主要参数 -a, --all:不隐藏任何以“.” 字符开始的项目。 -A, --almost-all:列出除了“ . ”及 “.. ”以外的任何项目。 --author:印出每个文件著作者。 -b, --escape:以八进制溢出序列表示不可打印的字符。 --block-size=大小:块以指定的字节为单位。 -B, --ignore-backups:不列出任何以 ~ 字符结束的项目。 -f:不进行排序,-aU参数生效,-lst参数失效。 -F, --classify:加上文件类型的指示符号 (*/=@| 其中一个)。 -g:like -l, but do not list owner。 -G, --no-group:inhibit display of group information。 -i, --inode:列出每个文件的inode号。 -I, --ignore=样式:不印出任何符合Shell万用字符的项目。 -k:即--block-size=1K。 -l:使用较长格式列出信息。 -L, --dereference:当显示符号链接的文件信息时,显示符号链接所指示的对象,而并非符号链接本身的信息。 -m:所有项目以逗号分隔,并填满整行行宽。 -n, --numeric-uid-gid:类似-l,但列出UID及GID号。 -N, --literal:列出未经处理的项目名称,例如不特别处理控制字符。 -p, --file-type:加上文件类型的指示符号 (/=@| 其中一个)。 -Q, --quote-name:将项目名称括上双引号。 -r, --reverse:依相反次序排列。 -R, --recursive:同时列出所有子目录层。 -s, --size:以块大小为序。 4.应用举例 ls 命令是Linux系统使用频率最多的命令,它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色,其中蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色表示是链接文件,加粗的黑色表示符号链接,灰色表示是其它格式文件。ls最常使用的是ls- l,见图1所示。 图1 使用ls-l命令 文件类型开头是由10个字符构成的字符串。其中第一个字符表示文件类型,它可以是下述类型之一:-(普通文件)、d(目录)、l(符号链接)、b(块设备文件)、c(字符设备文件)。后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读(r)、写(w)和执行权限(x)。对于目录,表示进入权限。s表示当文件被执行时,把该文件的UID 或GID赋予执行进程的UID(用户ID)或GID(组 ID)。t表示设置标志位(留在内存,不被换出)。如果该文件是目录,那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件,那么在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。接着显示的是文件大小、生成时间、文件或命令名称。 diff 1.作用 diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。 2.格式 diff [options] 源文件 目标文件 3.[options]主要参数 -a:将所有文件当作文本文件来处理。 -b:忽略空格造成的不同。 -B:忽略空行造成的不同。 -c:使用纲要输出格式。 -H:利用试探法加速对大文件的搜索。 -I:忽略大小写的变化。 -n --rcs:输出RCS格式。 cmp 1.作用 cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。 2.格式 cmp[options] 文件名 3.[options]主要参数 -l: 将字节以十进制的方式输出,并方便将两个文件中不同的以八进制的方式输出。 cat 1.作用 cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。 2.格式 cat [options] 文件1 文件2…… 3.[options]主要参数 -n:由第一行开始对所有输出的行数编号。 -b:和-n相似,只不过对于空白行不编号。 -s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。 4.应用举例 (1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令: $ cat README  (2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1 中: $ cat README INSTALL File1 (3)cat还有一个重要的功能就是可以对行进行编号,见图2所示。这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。 图2 使用cat命令/etc/named.conf文件进行编号 对行进行编号功能有-b(只能对非空白行进行编号)和-n(可以对所有行进行编号)两个参数: $ cat -b /etc/named.conf ln 1.作用 ln命令用来在文件之间创建链接,它的使用权限是所有用户。 2.格式 ln [options] 源文件 [链接名] 3.参数 -f:链结时先将源文件删除。 -d:允许系统管理者硬链结自己的目录。 -s:进行软链结(Symbolic Link)。 -b:将在链结时会被覆盖或删除的文件进行备份。 链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。 与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中含的有另一文件的位置信息。 动手练习 上面我们介绍了Linux文件处理命令,下面介绍几个实例,大家可以动手练习一下刚才讲过的命令。 1.利用符号链接快速访问关键目录 符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用,但由于Linux的文件和目录结构等原因,这个文件或目录在很深的子目录中。比如, Apache Web服务器文档位于系统的/usr/local/httpd/htdocs中,并且不想每次都要从主目录进入这样一个长的路径之中(实际上,这个路径也非常不容易记忆)。 为了解决这个问题,可以在主目录中创建一个符号链接,这样在需要进入该目录时,只需进入这个链接即可。 为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录,在主目录下可以使用以下命令: $ ln -s /usr/local/httpd/htdocs gg 这样每次进入gg目录就可访问Web服务器的文档,以后如果不再访问Web服务器的文档时,删除gg即可,而真正的Web服务器的文档并没有删除。 2.使用dd命令将init.rd格式的root.ram内容导入内存 dd if=/dev/fd0 of=floppy.fd dd if=root.ram of=/dev/ram0 # 3.grep命令系统调用 grep是Linux/Unix中使用最广泛的命令之一,许多Linux系统内部都可以调用它。 (1)如果要查询目录列表中的目录,方法如下: $ ls -l | grep '∧d' (2)如果在一个目录中查询不含目录的所有文件,方法如下: $ ls -l | grep '∧[∧d]' (3)用find命令调用grep,如所有C源代码中的“Chinput”,方法如下: $find /ZhXwin -name *.c -exec grep -q -s Chinput {} \;-print -------------------------------------------------------------------------------- Linux必学的60个命令(3)-系统管理命令 Linux必学的系统管理命令 对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令。 df 1.作用 df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。 2.格式 df [options] 3.主要参数 -s:对每个Names参数只给出占用的数据块总数。 -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。 -k:以1024字节为单位列出磁盘空间使用情况。 -x:跳过在不同文件系统上的目录不予统计。 -l:计算所有的文件大小,对硬链接文件则计算多次。 -i:显示inode信息而非块使用量。 -h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。 -P:使用POSIX输出格式。 -T:显示文件系统类型。 4.说明 df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,括总容量、可用的空闲空间、目前的安装点等。 超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。 5.应用实例 Linux支持的文件系统非常多,括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁盘空间时还可以得到文件系统的信息: #df -T 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% / /dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C /dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D /dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E /dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F /dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G 从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。 top 1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户。 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 c:显示进程完整的路径与名称。 S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。 s:安全模式。 i:不显示任何闲置(Idle)或无用(Zombie)的行程。 n:显示更新的次数,完成后将会退出top。 4.说明 top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。这里我们结合图1来说明它给出的信息。 图1 top命令的显示 在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起 (Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。 PID(Process ID):进程标示号。 USER:进程所有者的用户名。 PR:进程的优先级别。 NI:进程的优先级别数值。 VIRT:进程占用的虚拟内存值。 RES:进程占用的物理内存值。 SHR:进程使用的共享内存值。 S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 %CPU:该进程占用的CPU使用率。 %MEM:该进程占用的物理内存和总内存的百分比。 TIME+:该进程启动后占用的总的CPU时间。 Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。 top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 :立刻刷新。 P:根据CPU使用大小进行排序。 T:根据时间、累计时间排序。 q:退出top命令。 m:切换显示内存信息。 t:切换显示进程和CPU状态信息。 c:切换显示命令名称和完整命令行。 M:根据使用内存大小进行排序。 W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。 可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。 5.应用实例 使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面,见图2所示。 图2 使用top命令监视指定用户 free 1.作用 free命令用来显示内存的使用情况,使用权限是所有用户。 2.格式 free [-b|-k|-m] [-o] [-s delay] [-t] [-V] 3.主要参数 -b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。 -s delay:显示每隔多少秒数来显示一次内存使用情况。 -t:显示内存总和列。 -o:不显示缓冲区调节列。 4.应用实例 free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。 #free -b -s5 使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。 quota 1.作用 quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户。 2.格式 quota [-g][-u][-v][-p] 用户名 组名 3.参数 -g:显示用户所在组的磁盘使用限制。 -u:显示用户的磁盘使用限制。 -v:显示没有分配空间的文件系统的分配情况。 -p:显示简化信息。 4.应用实例 在企业应用中磁盘配额非常重要,普通用户要学会看懂自己的磁盘使用情况。要查询自己的磁盘配额可以使用下面命令(下例中用户账号是caojh): #quota caojh Disk quotas for user caojh(uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 58 200000 400000 41 500 1000 以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。 at 1.作用 at命令用来在指定时刻执行指定的命令序列。 2.格式 at [-V] [-q x] [-f file] [-m] time 3.主要参数 -V:显示标准错误输出。 -q:许多队列输出。 -f:从文件中读取作业。 -m:执行完作业后发送电子邮件到用户。 time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。偏移量的格式为时间+偏移量,单位是minutes、hours和days。 4.应用实例 #at -f data 15:30 +2 days 上面命令表示让系统在两天后的17:30执行文件data中指明的作业。 lp 1.作用 lp是打印文件的命令,使用权限是所有用户。 2.格式 lp [-c][-d][-m][-number][-title][-p] 3.主要参数 -c:先拷贝文件再打印。 -d:打印队列文件。 -m:打印结束后发送电子邮件到用户。 -number:打印份数。 -title:打印标题。 -p:设定打印的优先级别,最高为100。 4.应用实例 (1)使用lp命令打印多个文件 #lp 2 3 4 request id is 11 (3 file(s)) 其中2、3、4分别是文件名;“request id is 11 (3 file(s)) ”表示这是第11个打印命令,依次打印这三个文件。 (2)设定打印优先级别 #lp lp -d LaserJet -p 90 /etc/aliases 通过添加“-p 90”,规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,括没有设置优先级的作业,缺省优先级是50 useradd 1.作用 useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。 2.格式 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 3.主要参数 -c:加上备注文字,备注文字保存在passwd的备注栏中。  -d:指定用户登入时的启始目录。 -D:变更预设值。 -e:指定账号的有效期限,缺省表示永久有效。 -f:指定在密码过期后多少天即关闭该账号。 -g:指定用户所属的群组。 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录。 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组。 -r:建立系统账号。 -s:指定用户登入后所使用的shell。 -u:指定用户ID号。 4.说明 useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。 5.应用实例 建立一个新用户账户,并设置ID: #useradd caojh -u 544 需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。 groupadd 1.作用 groupadd命令用于将新组加入系统。 2.格式 groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数 -g gid:指定组ID号。 -o:允许组ID号,不必惟一。 -r:加入组ID号,低于499系统账号。 -f:加入已经有的组时,发展程序退出。 4.应用实例 建立一个新组,并设置组ID加入系统: #groupadd -g 344 cjh 此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 kill 1.作用 kill命令用来中止一个进程。 2.格式 kill [ -s signal | -p ] [ -a ] pid ... kill -l [ signal ] 3.参数 -s:指定发送的信号。 -p:模拟发送信号。 -l:指定信号的名称列表。 pid:要中止进程的ID号。 Signal:表示信号。 4.说明 进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。 Linux 操作系统括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的 Apache服务器的监控进程。 kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。 5.应用实例 (1)强行中止(经常使用杀掉)一个进程标识号为324的进程: #kill -9 324 (2)解除Linux系统的死锁 在Linux 中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。当 kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果 Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有含有Mozolla浏览器的程序。首先用top命令查处该程序的PID,然后使用kill命令停止这个程序: #kill -SIGKILL XXX 其中,XXX是含有Mozolla浏览器的程序的进程标识号。 (3)使用命令回收内存 我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令: #kill -9 XXX 其中,XXX是无用的进程标识号。 然后使用下面命令: #free 此时会发现可用内存容量增加了。 (4)killall命令 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如: # killall -HUP inetd crontab 1.作用 使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。 2.格式 crontab [ -u user ] 文件 crontab [ -u user ] { -l | -r | -e } 3.主要参数 -e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。 -r:删除目前的时程表。 -l:列出目前的时程表。 crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。 4.说明 和at命令相比,crontab命令适合完成固定周期的任务。 5.应用实例 设置一个定时、定期的系统提示: [cao @www cao]#crontab -e 此时系统会打开一个vi编辑器。 如果输入以下内容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下: # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 35 17 * * 5 wall "Tomorrow is Saturday I will play CS " 这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!显示结果见图3所示。 图3 一个定时、定期的系统提示 动手练习 1.联合使用kill和top命令观察系统性能的变化 首先启动一个终端运行top命令,然后再启动一个终端使用kill命令,见图4所示。 图4 观察kill命令对top终端的影响 这时利用上面介绍的kill命令来中止一些程序: #kill SIGKILL XXX 然后再看top命令终端的变化,括内存容量、CPU使用率、系统负载等。注意,有些进程是不能中止的,不过学习Linux命令时可以试试,看看系统有什么反应。 2.使用at和halt命令定时关机 首先设定关机时间是17:35,输入下面代码: #at 17:35 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at>halt `-i -p at> job 6 at 2004-01-01 17:35 此时实际上就已经进入Linux系统的Shell,并且编写一个最简单程序:halt -i -p。上面Shell中的文本结束符号表示按“Ctrl+D”组合键关闭命令,提交任务退出Shell。“Job 6 at 2004-01-01 17:35”表示系统接受第6个at命令,在“2004-01-01 17:35”时执行命令:先把所有网络相关的装置停止,关闭系统后关闭电源。 3.用crontab命令实现每天定时的病毒扫描 前面已经介绍了一个简单的crontab命令操作,这里看一些更重要的操作。 (1)建立一个文件,文件名称自己设定,假设为caoproject: #crontab -e (2)文件内容如下: 05 09 * * * antivir 用vi编辑后存盘退出。antivir是一个查杀Linux病毒的软件,当然需要时先安装在系统中。 (3)使用crontab命令添加到任务列表中: #crontab caoproject 这样系统内所有用户在每天的9点05分会自动进行病毒扫描。 4.用kill使修改的配置文件马上生效 Windows用户一般都知道,重要配置文件修改后往往都要重新启动计算机才能使修改生效。而Linux由于采用了模块化设计,可以自己根据需要实时设定服务。这里以网络服务inetd为例介绍一些操作技巧。 inetd 是一个监听守护进程,监听与提供互联网服务进程(如rlogin、telnet、ftp、rsh)进行连接的要求,并扩展所需的服务进程。默认情况下, inetd监听的这些daemon均列于/etc /inetd.conf文件中。编辑/etc/inetd.conf文件,可以改变inetd启动服务器守护进程的选项,然后驱使inetd以 SIGHUP(signal 1)向当前的inetd进程发送信号,使inetd重读该文件。这一过程由kill命令来实现。 用vi或其它编辑器修改inetd.conf后,首先使用下面命令: #ps -ef |grep inetd 上面代码表明查询inetd.conf的进程号(PID),这里假设是1426,然后使用下面命令: # kill -1426 inetd 这样配置文件就生效了。 这一讲介绍的系统管理命令都是比较重要的,特别是crontab命令和quota命令使用起来会有一定难度,需要多做一些练习。另外,使用kill命令要注意“-9“这个参数,练习时最好不要运行一些重要的程序。 -------------------------------------------------------------------------------- Linux必学的60个命令(4)-网络操作命令 Linux必学的60个命令:网络操作命令 因为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件,尤其是TCP/IP网络协议的实现尤为成熟。 Linux的网络命令比较多,其中一些命令像ping、 ftp、telnet、route、netstat等在其它操作系统上也能看到,但也有一些Unix/Linux系统独有的命令,如ifconfig、 finger、mail等。Linux网络操作命令的一个特点是,命令参数选项和功能很多,一个命令往往还可以实现其它命令的功能。 ifconfig 1.作用 ifconfig用于查看和更改网络接口的地址和参数,括IP地址、网络掩码、广播地址,使用权限是超级用户。 2.格式 ifconfig -interface [options] address 3.主要参数 -interface:指定的网络接口名,如eth0和eth1。 up:激活指定的网络接口卡。 down:关闭指定的网络接口。 broadcast address:设置接口的广播地址。 pointopoint:启用点对点方式。 address:设置指定接口设备的IP地址。 netmask address:设置接口的子网掩码。 4.应用说明 ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令: #fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失。 如果要暂停某个网络接口的工作,可以使用down参数: #ifconfig eth0 down ip 1.作用 ip是iproute2软件里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。 2.格式 ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]] 3.主要参数 OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。目前,ip支持如表1所示选项。 OBJECT是要管理者获取信息的对象。目前ip认识的对象见表2所示。 表1 ip支持的选项 -V,-Version 打印ip的版本并退出。 -s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或多次,则输出的信息将更为详尽。 -f,-family 这个选项后面接协议种类,括inet、inet6或link,强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或any。link比较特殊,它表示不涉及任何网络协议。 -4 是-family inet的简写。 -6 是-family inet6的简写。 -0 是-family link的简写。 -o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果需要使用wc、grep等工具处理ip的输出,则会用到这个选项。 -r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址 COMMAND 设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些对象不支持这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。 ARGUMENTS 是命令的一些参数,它们倚赖于对象和命令。ip支持两种类型的参数:flag和parameter。flag由一个关键词组成;parameter由一个关键词加一个数值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev是ip link命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。我们将在后面的详细介绍每个命令的使用,命令的默认参数将使用default标出。 4.应用实例 添加IP地址192.168.2.2/24到eth0网卡上: #ip addr add 192.168.1.1/24 dev eth0 丢弃源地址属于192.168.2.0/24网络的所有数据报: #ip rule add from 192.168.2.0/24 prio 32777 reject ping 1.作用 ping检测主机网络接口状态,使用权限是所有用户。 2.格式 ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t] IP地址 3.主要参数 -d:使用Socket的SO_DEBUG功能。 -c:设置完成要求回应的次数。 -f:极限检测。 -i:指定收发信息的间隔秒数。 -I:网络界面使用指定的网络界面送出数据。 -l:前置载入,设置在送出要求信息之前,先行发出的数据。 -n:只输出数值。 -p:设置填满数据的范本样式。 -q:不显示指令执行过程,开头和结尾的相关信息除外。 -r:忽略普通的Routing Table,直接将数据送到远端主机上。 -R:记录路由过程。 -s:设置数据的大小。 -t:设置存活数值TTL的大小。 -v:详细显示指令的执行过程。 ping 命令是使用最多的网络指令,通常我们使用它检测网络是否连通,它使用ICMP协议。但是有时会有这样的情况,我们可以浏览器查看一个网页,但是却无法 ping通,这是因为一些网站处于安全考虑安装了防火墙。另外,也可以在自己计算机上试一试,通过下面的方法使系统对ping没有反应: # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all netstat 1.作用 检查整个Linux网络状态。 2.格式 netstat [-acCeFghilMnNoprstuvVwx][-A][--ip] 3.主要参数 -a--all:显示所有连线中的Socket。 -A:列出该网络类型连线中的IP相关地址和网络类型。 -c--continuous:持续列出网络状态。 -C--cache:显示路由器配置的快取信息。 -e--extend:显示网络其它相关信息。 -F--fib:显示FIB。 -g--groups:显示多重广播功能群组组员名单。 -h--help:在线帮助。 -i--interfaces:显示网络界面信息表单。 -l--listening:显示监控中的服务器的Socket。 -M--masquerade:显示伪装的网络连线。 -n--numeric:直接使用IP地址,而不通过域名服务器。 -N--netlink--symbolic:显示网络硬件外围设备的符号连接名称。 -o--timers:显示计时器。 -p--programs:显示正在使用Socket的程序识别码和程序名称。 -r--route:显示Routing Table。 -s--statistice:显示网络工作信息统计表。 -t--tcp:显示TCP传输协议的连线状况。 -u--udp:显示UDP传输协议的连线状况。 -v--verbose:显示指令执行过程。 -V--version:显示版本信息。 -w--raw:显示RAW传输协议的连线状况。 -x--unix:和指定“-A unix”参数相同。 --ip--inet:和指定“-A inet”参数相同。 4.应用实例 netstat 主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可: #netstat -a Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:32768 *:* LISTEN tcp 0 0 *:32769 *:* LISTEN tcp 0 0 *:nfs *:* LISTEN tcp 0 0 *:32770 *:* LISTEN tcp 0 0 *:868 *:* LISTEN tcp 0 0 *:617 *:* LISTEN tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:netbios-ssn *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:10000 *:* LISTEN tcp 0 0 *:http *:* LISTEN ...... 上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。 telnet 1.作用 telnet表示开启终端机阶段作业,并登入远端主机。telnet是一个Linux命令,同时也是一个协议(远程登陆协议)。 2.格式 telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主机名称IP地址] 3.主要参数 -8:允许使用8位字符资料,括输入与输出。 -a:尝试自动登入远端系统。 -b:使用别名指定远端主机名称。 -c:不读取用户专属目录里的.telnetrc文件。 -d:启动排错模式。 -e:设置脱离字符。 -E:滤除脱离字符。 -f:此参数的效果和指定“-F”参数相同。 -F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。 -k:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。 -K:不自动登入远端主机。 -l:指定要登入远端主机的用户名称。 -L:允许输出8位字符资料。 -n:指定文件记录相关信息。 -r:使用类似rlogin指令的用户界面。 -S:服务类型,设置telnet连线所需的IP TOS信息。 -x:假设主机有支持数据加密的功能,就使用它。 -X:关闭指定的认证形态。 4.应用说明 用户使用telnet命令可以进行远程登录,并在远程计算机之间进行通信。用户通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。为了通过 telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。 t

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值