20070105   VMWARE VSFTPD OnSetCursor

VMware Workstation 不用介绍,玩虚拟机的朋友都知道。这是2006.08.14发布的最新正式版,增加了更多系统的支持。

一直用自己做的5.0.0.13124版本的绿色版,因为没有解决VMNETBRIDGE的驱动安装问题,所以没法上网(其实也可以,不过非常的麻烦,自己都懒得搞了),只好用来做本地测试,也只限在几个朋友之间小小流传了一下。前几天朋友告诉我网上有个 绿色的5.5版,可以直接上网,于是让朋友传过来学习一下。
没想到朋友传过来的这个版本的安装批处理竟然经过加密?!晕死~~~分析后发现其实很简单,只是在文件头插入两个特殊字符,而且使用ANSI编码保存,即可骗过默认用Unicode编码打开的记事本。唉,作者也真是的~~~

看了一下他的安装脚本,简单的一行命令解决了长久以来困扰我的问题。作者使用了NETCFG来安装驱动并注册服务,这是个Windows PE下的一个系统文件(命令),用来给在PE下增加设备。亏我当年还玩了那么久的PE,还用它来实现PE的PPPOE拨号,我竟然把这个命令都给忘了,伤心地~~~
于是顺利地解决了网络问题,开心ing!也佩服作者的活学活用的本事,顺便向作者致敬!

本来打算就拿朋友传过来的这个绿色版用,但是由于作者精简的太厉害(压缩后只有5M多),除了基本的虚拟机和桥接网络功能外,其他很多功能都没有了,所以决定重新制作一个功能比较齐全的版本,省的到用到的时候还得再装原版,因此有了这个全功能免安装版。5 .5版新增了两个组件,VMware Virtual Machine Importer和VMware Virtual Image Editing前一个比较有用,用来把Virtual PC的虚拟硬盘文件转换成VMware的虚拟硬盘文件,这样就可以直接把在Virtual PC中安装的虚拟硬盘系统在VMware中使用,这个组件以前是独立于VMware的一个工具,需要安装,现在已经内置到VMware中了,这个组件保留。后一个组件应该具体作用不知道,也没有相关的资料,根据文件分析应该是用来管理VMware的虚拟磁 盘的。但是没有它vmware-vdiskmanager依然能完成所有的工作,而且它还会给系统安装两个非常耗资源的服务,因此就把它去掉了。其他的功能都全部保留。

由于VMware安装的系统服务比较多,会严重影响机器速度,所以在这个免安装版里,默认只安装必须的5个服务,而且我把这些服务都设置成了手动启动(除了VMware的基础服务VMX86之外),在需要时再打开。另外做了个启动服务的批处理,可以快速启 动服务以及安装其他的几个服务,包括VMware的扩展虚拟网卡。这样在不同的应用时打开不同的服务,比较节省资源。如果只是用来测试一下安装系统或者在虚拟系统中测试软件的话,可以不用开启任何服务。

下面是几个服务的说明:

本机网络服务 ——- 这个选项包含了VMNETUSERIF(VMware网络服务接口)和VMNETBRIDGE(VMware桥接网络服务)
这两个服务是使用VMware网络必须的
USB和COM服务 ——- 包含了USB支持服务和COM口支持服务,一般如果不在VMware的虚拟系统中使用USB和COM口的话,
可以在虚拟机中删除USB设备,如果要用到的话,打开这两个服务
DHCP和NAT服务 ——- 网络配置在NAT模式下的话需要开启这两个服务
用户权限服务 ——- 在非管理员组的用户要使VMware的话需要开启这个服务
具体没测试过,记得以前在非管理用户的时候也可以使用
启动全部服务 ——- 启动上面的所有服务,其实这个选项根本没必要
安装虚拟网卡1和8 ——- 默认没有安装VMware的两个虚拟网卡(一个是管Host-Only模式的,一个是管NAT模式的)
因为他们比较影响系统速度,使用此选项后会安装这两个虚拟网卡

已知问题:VMDHCP服务似乎无法启动,因为这个功能用的不是很熟,所以不知道如何解决。
VMDHCP服务在原版安装过程中会自动根据机器的网络配置生成配置文件,而免安装版无法自动生成,不知道是不是这个原因?因为没有时间分析安装包的脚本,所以没法知道其生成配置文件的原理,欢迎了解的朋友指教。

VMware Virtual Machine Importer实际上就是原来的VMware V2V Assistant,它可以将Microsoft Virtual PC、Virtual Server创建的虚拟机硬盘文件导入VMware,这个有趣的功能可以说是非常实用,不过也颇有些挖微软墙角的味道。  
  软件安装后会在开始菜单的VMware程序组中增加一个快捷方式,执行后按照向导的提示进行操作,如图1所示,单击“Browse”按钮导入相应的?.vmc文件,整个导入过程可能需要几分钟的时间,这主要取决于*.vmc文件的大小及宿主机的硬件配置,导入结束后即可直接使用,而不用再重新创建。当然,在导入之前,我们必须首先在VMware中创建一台虚拟机,否则将无法执行导入操作。

VMware DiskMount Utility是一个命令行工具,可以将VMware创建的虚拟机硬盘文件映射为宿主机上的硬盘分区,这样就可以在宿主机上直接打开虚拟机的硬盘,不仅大大方便了宿主机与虚拟机之间的文件传输,而且对缓解硬盘空间紧张的用户来说尤其实用。  
  使用时请首先进入命令提示符窗口,然后跳转到VMware DiskMount Utility的安装目录下,直接运行vmware-mount.exe文件,运行后就可以开始映射了,不过映射之前请暂时不要启动虚拟机。例如,我们准备将G:\\VMware\\Windows XP\\Windows XP Professional.vmdk这个文件映射为H盘,那么可以使用如下命令:  
  vmware-mount.exe H: "G:\\VMware\\Windows XP\\Windows XP Professional.vmdk"  
  需要断开映射时,请键入如下命令:vmware-mount.exe H: /d。更多的参数请使用vmware-mount/?查看,如图2所示,朋友们不妨慢慢研究,这里就不多说了。
我们可以将VMware Movie Decoder视作一款特殊的屏幕录制工具,它可以将VMware虚拟机中的所有操作录制下来,注意不是抓图,而是录制成影片,这样给别人讲解时就方便多了。  
  安装后我们可以从VMware的菜单中选择“Capture Movie”命令,此时会看到一个对话框,指定待录制影片的保存路径和文件格式,如果你觉得有必要,可以可以所选的格式设置不同的视频压缩率,按下保存按钮,然后你就可以切换到虚拟机中进行相应的操作了。  
  处于录制模式时,虚拟机窗口的状态栏中会显示一个红色的实心圆圈,提醒你当前的操作正在被刻录,需要停止录制时,可以执行菜单下的“Stop Movie Capture”命令。
Convert and Move Virtual Machines into the Latest VMware Products
VMware Virtual Machine Importer 2 is the latest utility for IT professionals and software developers & testers working with virtual machines. VMware Virtual Machine Importer is a freely available, stand-alone utility to import virtual machines from a variety of source formats into most VMware product environments.

4、VSFTPD的启动与停止

  VSFTPD可以单独(Standalone)方式运行,如同httpd、named这类的服务器的运行方式,这是RHL9中默认的方式;也可以采用xinetd方式运行,这是RHL7.x、8中的默认方式。具体的运行方式由参数listen决定。从RHL中VSFTPD的运行方式,也可以看出VSFTPD的逐步发展。

  当listen参数值为YES时,RHL9中的默认值,VSFTPD单独运行,我们可以使用脚本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD。命令如下:
  /etc/rc.d/init.d/vsftpd start&line;stop&line;restart

  如果说在RHL9上,您还希望使用Xinetd启动VSFTPD的运行方式,那么首先要将vsftpd.conf配置文件中的listen参数值改为NO。其次,生成一个/etc/xinetd.d/vsftpd文件,内容如下:
  service vsftpd
  &leftsign;
  disable = no
  socket_type = stream
  wait = no
  user = root
  server = /usr/sbin/vsftpd
  port = 21
  log_on_success += PID HOST DURATION
  log_on_failure += HOST
  &rightsign;
  通过修改disable值为no或yes,并重新启动xinetd,从而启动或停止VSFTPD。

  由于VSFTPD的单独模式已经拥有足够的能力,所以后面6中讨论到的应用,都是以单独模式来运行的,而非Xinetd方式。

  注:还可以直接执行vsftpd来启动FTP服务,关闭时使用“kill”命令。
  [root@hpe45 root]# /usr/local/sbin/vsftpd &

修改主机名称和IP
用vi编辑 /etc/sysconfig/network and /etc/sysconfig/network-scripts/ifcfg-eth0

1) /etc/sysconfig/network

NETWORKING = yes
FORWARD_IPV4 = yes
HOSTNAME = xxxx.com #你的主机名
GATEWAY = 123.123.123.123 #网关
GATEWAYDEV = eth0

2) /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE = eth0
IPADDR = xxx.xxx.xxx.xxx #你的IP地址
NETMASK = xxx.xxx.xxx.xxx #你的子网掩码
NETWORK = xxx.xxx.xxx.xxx #你的工作网络
BROADCAST = xxx.xxx.xxx.xxx #你的广播址
ONBOOT = yes

然后运行 /etc/sysconfig/network-scripts/ifup eth0 启动。

BOOL  OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
&leftsign;
 // TODO: Add your message handler code here and/or call default
 if(bCur)
  SetCursor(LoadCursor(NULL,IDC_ARROW));
 else
 &leftsign;
  SetCursor(LoadCursor(NULL,IDC_WAIT));
  return TRUE;
 &rightsign;
 return CDialog::OnSetCursor(pWnd, nHitTest, message);
&rightsign;
鼠标设为等待形状(IDC_WAIT)
我不知问题出现在哪里,  
  我现在是这样的  
  HCURSOR   holdcursor,hwaitcursor;  
          hwaitcursor   =   LoadCursor(NULL,IDC_WAIT);  
  holdcursor   =   ::SetCursor(hwaitcursor);  
  代码应该没错的,可能是放置地方不对,他有什么特别限制吗,  
  我是放在一个自己的类的函数,通过消息触发,自己定义的那个类是从clistview里继承过来的,  
  另外我发觉放在对话框程序这样也不行的,  
  我还试了CWaitCursor   wait;  
  pApp->BeginWaitCursor();  
  都没用,不知问题出现在哪里?  

历史博文

标签:, ,
六月 8, 2007 at 1:08 下午 by yippee 1,004 次
Category: Info
Tags: , ,