淘宝设优惠券卖家发放:如何用VB写个程序,一运行就不动声色地将自己复制到C:\WINNT,且有注册表中添加启动项?

来源:百度文库 编辑:高校问答 时间:2024/04/29 00:05:56

要正规的完成你的任务,至少得几十行代码。
一、正确取出当前程序所在路径APPPATH(可用APP.PATH)
二、正确取得当前程序文件名(app.EXEName)
三、假设你要在注册表自运行项目上启动你程序的表项是MYEXE,那么程序启动时要读这个表项目的键值:如果已有了就不能每次程序运行都写入,如果没有才写入。这个读与写字符型注册表键值需要用API,两个过程需要十几行来完成——是指正规操作注册表的方法,你可以网上找资料很多的。
四、取出当前操作系统的WINDOWS目录,因为WIN98/WINXP/WIN2003的WINDOWS目录默认就是操作系统所在分区根目录下WINDOWS目录,而WINNT和WIN2000即是WINNT目录,而且这也不是绝对的,所以到底WINDOWS目录在哪,正规方法还是需要用API来取得,这需要几行代码的。
五、将你的文件拷贝到取得的WINDOWS目录中

另外,关于你的程序所在路径,包括取得的WINDOWS目录都有一个未尾是否存在“\“的问题。如果正规写程序你要考虑是在根目录下还是非根目录下,这两者是很不同的,比如你的程序在“D:\MY.EXE”和在“D:\123\MY.EXE”是不同的,你用APP.PATH取得的结果分别是“D:\”和“D:\123”,再加上程序文件名本身,前者是“D:\MY.EXE”后者是“D:\123MY.EXE”,看出来了吧,有一个“\”的区别,这就导致你的程序运行时要不在根目录下出错要么在非根目录下出错,这也是很多写程序的人容易忽视的一个总是。所以你应该设置一当前路径的变量如APPPATH,然后:
if right(app.path,1)<>"\" then
APPPATH=app.path & "\"
else
APPPATH=app.path
endif
filecopy apppath & "MY.EXE",WINPATH & "MY.EXE"
写到这问题又来了,最后这个WINPATH是取得的WINDOWS目录,也涉及到未尾有没有“\"的问题最好也要注意。

以上只是方法和注意,代码没给上你应该能找到,找不到再说一声吧。

Private Sub Form_Load()
FileCopy App.Path & "程序名", "C:\Documents and Settings\All Users\「开始」菜单\程序\启动\程序名.exe"
FileCopy App.Path & "程序名", "C:\WINNT\程序名.exe"
End Sub