VB中怎么让自己写的程序在开机时自动启动?

VB中怎么让自己写的程序在开机时自动启动?,第1张

给你提供我用到的代码:\x0d\x0a'初始化全局变量\x0d\x0aOption Explicit\x0d\x0aPublic pathini As String\x0d\x0aPublic mark As Integer '控制是否自启动的标志变量(1自启动,0不自启动)\x0d\x0a'添加删除自启动项目的API函数声明\x0d\x0aPublic Const HKEY_CLASSES_ROOT = &H80000000\x0d\x0aPublic Const HKEY_CURRENT_USER = &H80000001\x0d\x0aPublic Const HKEY_LOCAL_MACHINE = &H80000002\x0d\x0aPublic Const HKEY_USERS = &H80000003\x0d\x0aPublic Const HKEY_PERFORMANCE_DATA = &H80000004\x0d\x0aPublic Const HKEY_CURRENT_CONFIG = &H80000005\x0d\x0aPublic Const HKEY_DYN_DATA = &H80000006\x0d\x0aPublic Const REG_NONE = 0\x0d\x0aPublic Const REG_SZ = 1\x0d\x0aPublic Const REG_EXPAND_SZ = 2\x0d\x0aPublic Const REG_BINARY = 3\x0d\x0aPublic Const REG_DWORD = 4\x0d\x0aPublic Const REG_DWORD_BIG_ENDIAN = 5\x0d\x0aPublic Const REG_MULTI_SZ = 7\x0d\x0aDeclare Function RegOpenKey Lib 'advapi32.dll' Alias 'RegOpenKeyA' (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long\x0d\x0aDeclare Function RegCreateKey Lib 'advapi32.dll' Alias 'RegCreateKeyA' (ByVal hKey As Long,ByVal lpSubKey As String, phkResult As Long) As Long\x0d\x0aDeclare Function RegCloseKey Lib 'advapi32.dll' (ByVal hKey As Long) As Long\x0d\x0aDeclare Function RegSetValue Lib 'advapi32.dll' Alias 'RegSetValueA' (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long\x0d\x0aDeclare 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\x0d\x0aDeclare Function RegDeleteValue Lib 'advapi32.dll' Alias 'RegDeleteValueA' (ByVal hKey As Long, ByVal lpValueName As String) As Long\x0d\x0a'在注册表中添加删除自启动项目的模块\x0d\x0aSub Main()\x0d\x0a' 定义hKey 为句柄变量、SubKey为注册表RUN项目变量、Exe为程序名变量\x0d\x0aDim hKey As Long, SubKey As String, Exe As String\x0d\x0a'将程序设定成随 Windows 启动而启动\x0d\x0a'取程序所在路径,判断是否为根目录并分别加上程序全名并赋值给变量Exe\x0d\x0aIf Right(App.Path, 1) = '\' Then\x0d\x0aExe = App.Path App.EXEName '.exe' ' 根目录情况\x0d\x0aElse: Exe = App.Path '\' App.EXEName '.exe' ' 非根目录情况\x0d\x0aEnd If\x0d\x0aSubKey = 'Software\Microsoft\Windows\CurrentVersion\Run' ' 设置项目\x0d\x0aRegCreateKey HKEY_LOCAL_MACHINE, SubKey, hKey ' 取得句柄\x0d\x0aRegSetValueEx hKey, '时间助手', 0, REG_SZ, ByVal Exe, LenB(StrConv(Exe, vbFromUnicode)) 1 ' 写入键值\x0d\x0aRegCloseKey hKey ' 关闭句柄\x0d\x0aEnd Sub\x0d\x0a自己看吧,很简单的,修改一下就可以用了.

安全模式是最简模式,一般的启动项都不会加载,目前唯一的可能是将程序封装成服务,并且添加到注册表项启动服务。

hkey_local_machine\system\controlset001\control\safeboot

这里的键值(我的是win7,其他系统有可能不同,不过只要查safeboot全字匹配就可以搜索到)是管理安全模式的。有两个key(键),一个是minimal一个是network。这两个在f8菜单选择,一个是普通安全模式,一个是带网络的安全模式,带命令提示符的安全模式属于minimal。

打开这两个键你就可以发现下属那么多键,有guid有服务名。

guid是启动设备,那些键是启动服务、驱动或者是设备。具体看default的值,service是服务device是设备driver是驱动。

启动服务的方法是在minimal或者network创建键值,名称为服务名,default值设置为service,这样在安全模式就可以加载了。(至于你是封装成驱动还是设备还是服务你就看着办吧,服务最简单)

当然如果想做病毒的话其实不必这么麻烦。。直接删除了safeboot以及其中的所有建那用户就无法进入safeboot了,到时候直接蓝屏了。(测试的时候最好备份啊...)

我只是说明方法,具体的还需lz自己写。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11634834.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存