VB实现随系统启动问题(简单)

流星落2013 2008-10-22 06:56:09
下面是网上一些利用注册表实现VB自动启动软件的代码:
'声明操作注册表的API
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1

'按钮一单击事件
Private Sub command1_Click()
Dim strString As String
Dim keyhand As Long
Dim r As Long
strString = App.Path & "\" & "bookmark.exe"
r = RegCreateKey(HKEY_LOCAL_MACHINE, "software\microsoft\windows\currentversion\run", keyhand)
r = RegSetValueEx(keyhand, "Bookmark", 0, REG_SZ, ByVal strString, Len(strString) + 15)
r = RegCloseKey(keyhand)
End Sub

偶有两个问题不明白,
1、当启动时系统时会提示找不到“C:\Documents and Settings\我的用户名\XXXX.mdb,我的小程序是一启动就访问同目录下的XXX.mdb数据库的。是个绿色软件,放在桌面,带一数据库文件。
2、代码可以实现写入注册表的RUN项,如果我在代码的"Len(strString) + 15"处不加上15的话,如果我的程序放到桌面上就不能启动的了,写入注册表时的应用程序的路径太长而不能完全写入.为什么一定要加长字符长度呢。

我应如何解决,请帮忙。谢谢
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
流星落2013 2008-10-22
  • 打赏
  • 举报
回复
回答问题及时,且很中肯.谢谢
fvflove 2008-10-22
  • 打赏
  • 举报
回复
1、当启动时系统时会提示找不到“C:\Documents and Settings\我的用户名\XXXX.mdb,我的小程序是一启动就访问同目录下的XXX.mdb数据库的。是个绿色软件,放在桌面,带一数据库文件。


你看一下你的程序里面, 引用数据库采用的是什么方式:

相对路径还是绝对路径...无论相对路径与绝对路径. 你的那个数据库文件是否放在那个位置了.

2、代码可以实现写入注册表的RUN项,如果我在代码的"Len(strString) + 15"处不加上15的话,如果我的程序放到桌面上就不能启动的了,写入注册表时的应用程序的路径太长而不能完全写入.为什么一定要加长字符长度呢。

可以不用 "Len(strString) + 15"(这个不可靠) 用 "LenB(strString)"

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧