令人抓狂的一天:FileSystemWatcher,SharpZipLib,虚拟机,IPC及其他
2009-03-05 23:10
232 查看
今天忙的事情还真是多啊,如果不是下周一要检查,我才不会这么拼劲呢.
今天上午测试了一个叫MP3Splitter的小程序,发现程序的安装文件夹里面的文件夹仅仅只抓到了一个,觉得甚是诡异.用FileMon观察了一下,发现所有的文件都在那.于是开始怀疑FileSystemWatcer相关的代码了.检查了几个来回发现问题可能出现在没有考虑Rename.有些软件在拷贝或下载的过程中会创建一些临时文件,在文件拷贝或下载完成时再把名字改正过来,比如迅雷就是这样.我把FileSystemWatcher的Renamed事件添加了上去,果然正常了.接着又发现注册表的抓取也不正确,很多重要信息也没有抓到.因为我在调用RegMon的时候仅仅设置了一个待监视的进程.而MP3Splitter在安装完成的末期会创建一个.temp的进程,大概是专门用来处理注册表操作的.唉,看到任务管理器里的那个.tmp的时候我真不敢相信自己的眼睛.看来我只能通过排除的办法了.
由于安装脚本那一块还没有发现什么问题,于是我开始写上传那一块了.开始时我们是打算把安装包从WINDOWS传到linux服务器上,于是我用SFTP在C#程序里加了一个上传的功能.后来考虑到linux向windows主动传文件比较麻烦(用Samba可以实现linux跟windows的文件互访,但是达不到我的要求,因为我要linux主动把文件送到windows里且自动执行,而目标widnows主机可能是刚安装过的,上面没有任何附加软件).后来觉得把windows下的安装包专门放到一个windows主机上或许更简单一些.省得在linux上绕一道弯.而linux服务器仅仅需要在数据库里添加一条记录即可.于是便这样写了.在linux服务器里新建了一个WINDOWS虚拟机,装上servU,用于存放windows下的软件安装包,另外通过ipc$来实现在其他WINDOW目标机上的软件部署.C#里面实现FTP上传很简单,但后来的一个问题困惑了我很久.那台linux服务器上一共安装了两个WINDOWS虚拟机,一个就是那个代理机器(充当FTP服务器并执行远程部署),另一个为目标机,就是要部署软件的机器.两台机子的IP,网关,DNS都设置正确,都能Ping 真实机器.但是不能互相PING,并且真实机器也无法PING通他们.我们为这个忙碌了很久,九点多的时候学长才找到了原因,原来是802.x设置的问题.而我自己的机子上的那个WINDOWS虚拟机把防火墙关闭后,也可以PING通了.最后解决的一个问题是IPC连接的问题.在网上搜到了原因,原来是没有把简单文件夹的共享给去掉.
下午还碰到了线程的问题,也是我程序里的一个BUG,应该把thread声明了类的一个成员的,结果我放到了函数里,导致函数执行完毕后thread无效.但我不理解的是为什么很多时候它也能正常工作.中间某段时间我的zip压缩功能出现了差错,调试了很长时间,也没有找出原因.后来不知道怎么就好了.刚好那里我也在调那个线程的问题,所以我还不敢确定到底是什么原因.
本来还要写一个PHP的网页的,没动工.我现在几乎完全不会用PHP了.大三实习时写过一个,也只是简单用过一下.到现在也不过一年嘛,忘得一干二净了.不过看起来还不是很吃力.
明天还要集中测试一下.这个日子呀.
今天上午测试了一个叫MP3Splitter的小程序,发现程序的安装文件夹里面的文件夹仅仅只抓到了一个,觉得甚是诡异.用FileMon观察了一下,发现所有的文件都在那.于是开始怀疑FileSystemWatcer相关的代码了.检查了几个来回发现问题可能出现在没有考虑Rename.有些软件在拷贝或下载的过程中会创建一些临时文件,在文件拷贝或下载完成时再把名字改正过来,比如迅雷就是这样.我把FileSystemWatcher的Renamed事件添加了上去,果然正常了.接着又发现注册表的抓取也不正确,很多重要信息也没有抓到.因为我在调用RegMon的时候仅仅设置了一个待监视的进程.而MP3Splitter在安装完成的末期会创建一个.temp的进程,大概是专门用来处理注册表操作的.唉,看到任务管理器里的那个.tmp的时候我真不敢相信自己的眼睛.看来我只能通过排除的办法了.
由于安装脚本那一块还没有发现什么问题,于是我开始写上传那一块了.开始时我们是打算把安装包从WINDOWS传到linux服务器上,于是我用SFTP在C#程序里加了一个上传的功能.后来考虑到linux向windows主动传文件比较麻烦(用Samba可以实现linux跟windows的文件互访,但是达不到我的要求,因为我要linux主动把文件送到windows里且自动执行,而目标widnows主机可能是刚安装过的,上面没有任何附加软件).后来觉得把windows下的安装包专门放到一个windows主机上或许更简单一些.省得在linux上绕一道弯.而linux服务器仅仅需要在数据库里添加一条记录即可.于是便这样写了.在linux服务器里新建了一个WINDOWS虚拟机,装上servU,用于存放windows下的软件安装包,另外通过ipc$来实现在其他WINDOW目标机上的软件部署.C#里面实现FTP上传很简单,但后来的一个问题困惑了我很久.那台linux服务器上一共安装了两个WINDOWS虚拟机,一个就是那个代理机器(充当FTP服务器并执行远程部署),另一个为目标机,就是要部署软件的机器.两台机子的IP,网关,DNS都设置正确,都能Ping 真实机器.但是不能互相PING,并且真实机器也无法PING通他们.我们为这个忙碌了很久,九点多的时候学长才找到了原因,原来是802.x设置的问题.而我自己的机子上的那个WINDOWS虚拟机把防火墙关闭后,也可以PING通了.最后解决的一个问题是IPC连接的问题.在网上搜到了原因,原来是没有把简单文件夹的共享给去掉.
下午还碰到了线程的问题,也是我程序里的一个BUG,应该把thread声明了类的一个成员的,结果我放到了函数里,导致函数执行完毕后thread无效.但我不理解的是为什么很多时候它也能正常工作.中间某段时间我的zip压缩功能出现了差错,调试了很长时间,也没有找出原因.后来不知道怎么就好了.刚好那里我也在调那个线程的问题,所以我还不敢确定到底是什么原因.
本来还要写一个PHP的网页的,没动工.我现在几乎完全不会用PHP了.大三实习时写过一个,也只是简单用过一下.到现在也不过一年嘛,忘得一干二净了.不过看起来还不是很吃力.
明天还要集中测试一下.这个日子呀.
相关文章推荐
- FileSystemWatcher事件多次触发执行,或者其他的委托事件多次触发都可行
- 事件驱动自动生成静态页面模板解决方法(一)——利用静态类和FileSystemWatcher实现模板快速索引和读取
- 花了一天给电脑杀毒,结果令人郁闷
- 令人抓狂的src-dojo开发中遇到的一个问题
- 天涯上令人抓狂的100个神经签名[转]
- 解决FileSystemWatcher事件多次触发的方法
- VMware 设备VMnet0 上的网桥暂时关闭。此虚拟机无法与主机或网格中的其他计算机通信【转】
- QLineEdit 一个令人抓狂的应用场合
- 谈谈C#文件监控对象FileSystemWatcher使用感受
- 令人抓狂的Java常量池探索
- 7个令人抓狂的网页设计的错误
- 用FileSystemWatcher监视文件系统
- 安装虚拟机后锐捷提示把其他的网卡禁用
- 解决令人抓狂的zend studio 7代码提示(content Assist)速度慢问题
- 在C#使用文件监控对象FileSystemWatcher 实现数据同步
- System.IO.FileSystemWatcher
- 被其他程序员骂懒惰!不够勤奋!(程序员的一天)
- 杂谈---令人抓狂的数据库行级锁问题
- 解决其他虚拟机与Zend Framework冲突的方法