程序自启动问题!!!

ronan 2002-07-31 08:29:05
我需要让我的程序在系统启动时自动运行
但不得其法
望各位兄弟抬举!!!
...全文
40 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
司马青衫依旧 2002-07-31
  • 打赏
  • 举报
回复
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();

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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