VB,判断存在路径,自动复制到目录

程序打开时,自动读取注册表[HKEY_CURRENT_USER\Software\XzGzs.Com.Cn\Mysoft]"Path"="C:\Windows\Mysof... 程序打开时,自动读取注册表
[HKEY_CURRENT_USER\Software\XzGzs.Com.Cn\Mysoft]
"Path"="C:\Windows\Mysoft\Patcher\Patcher.exe"
我想让程序根据这个值自动复制到C:\Windows\Mysoft\目录下。行不行?
不管用什么方法,只要行就OK。
别长篇大论。简练才是王道。谢谢!
对了。还要弹个是否的框,让别人选择是否复制到这个目录。
点是就复制过去运行。点否就不复制过去。直接运行程序!
展开
 我来答
し★Ve→ME
2008-11-11 · 超过44用户采纳过TA的回答
知道答主
回答量:132
采纳率:0%
帮助的人:0
展开全部
我这个很短很短,你要的功能一个不少,而且不需引用其他东西,直接复制代码就行了,呵呵,不知道你满意不,不满意的说,我给你改就行了
Private Sub Form_Load()
Dim Ws As Object, Reg As String, Path As String, Box As Long
Set Ws = CreateObject("wscript.shell") ' 设置注册表读写
Reg = Ws.regread("HKCU\Software\XzGzs.Com.Cn\Mysoft\Path") ' 读取注册表值
If Dir(Reg, 7) <> "" Then '判断是否存在注册表路径的那个文件,不存在就跳过
Box = MsgBox("是否复制文件到" & Replace(Reg, "\Patcher\", "\"), vbYesNo, "提示") '弹出提示,是否复制
If Box = vbYes Then FileCopy Reg, Replace(Reg, "\Patcher\", "\") '如果选是就复制文件
End If
End Sub

现在应该是你要的效果吧!自己看看,不行再说!
因特儿
2008-11-08 · TA获得超过1029个赞
知道小有建树答主
回答量:743
采纳率:0%
帮助的人:422万
展开全部
第一个问题不太明白啊,弹出是否框可以这样实现:
Private Sub Command1_Click()
if MsgBox("是否复制", vbYesNo + vbDefaultButton1 + vbQuestion, "提示")=vbyes then
执行复制的语句
else
直接运行
end if
end sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Juncox
2008-11-08 · TA获得超过1638个赞
知道大有可为答主
回答量:1904
采纳率:0%
帮助的人:1602万
展开全部
主程序中使用如下代码测试:
Private Sub Command1_Click()
Print GetRegString(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", "Default_Page_URL")
Print GetRegString(HKEY_CURRENT_USER, "Software\XzGzs.Com.Cn\Mysoft", "Path")
End Sub

'BAS 中的Module写入如下内容:
'注册表函数相关声明
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Private Const REG_SZ = 1&
Private Const REG_EXPAND_SZ = 2&
Private Const REG_BINARY = 3&
Private Const REG_DWORD = 4&
Private Const ERROR_SUCCESS = 0&

'读取注册表字符串键值
Public Function GetRegString(hKey As Long, strPath As String, strValue As String) As String
Dim keyhand, lResult, lDataBufSize, intZeroPos, lValueType, strBuf$
RegOpenKey hKey, strPath, keyhand
lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
If lValueType = REG_SZ Or lValueType = REG_EXPAND_SZ Then
strBuf = String(lDataBufSize, " ")
lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal strBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then
intZeroPos = InStr(strBuf, Chr$(0))
If intZeroPos > 0 Then GetRegString = Left$(strBuf, intZeroPos - 1) Else GetRegString = strBuf
End If
End If
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
43295811
2008-11-09 · TA获得超过1529个赞
知道大有可为答主
回答量:1701
采纳率:0%
帮助的人:2051万
展开全部
Private Sub Command1_Click()
'引用WSH对象
'引用方法:点击"工程"_"引用"_勾选 "windows script host object model"
'下面开始读取注册表
Dim WSH As New IWshRuntimeLibrary.WshShell
Dim myret As String
myret = WSH.RegRead("HKEY_CURRENT_USER\Software\XzGzs.Com.Cn\Mysoft\Path")
'读取完毕
If MsgBox("是否复制?", vbYesNo + vbQuestion, "信息") = vbNo Then Exit Sub
If Dir("C:\Windows\Mysoft")="" Then MkDir "C:\Windows\Mysoft"
FileCopy myret, "C:\Windows\Mysoft\"
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lgf126
2008-11-11 · TA获得超过1101个赞
知道小有建树答主
回答量:1077
采纳率:33%
帮助的人:469万
展开全部
楼主VB是什么版本?
6.0和2005版本,处理注册表差别就大了!2005要简单的多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式