目录复制和程序开机自动启动

实现系统自启动方式
     
     
1.      启动项中添加执行程序http://download1.csdn.net/down3/20070614/14162904485.rar
     
     
2.      修改注册表
     
     
3.      修改系统ini 文件
     
     

  
  
   
   
以供注册表实现方式为案例,源代码在附件里
selfRun.h 和selfRun.cpp

 在VC++6.0下调试正常

另外dir.cpp和dir.h是实现目录复制的源代码

#ifndef _SELFRUN_H
#define  _SELFRUN_H

#ifdef __cplusplus
extern   " C "   {
#endif
#include   
<windows.h>   
/* under VC++ 6.0
 * selfRun.H  For self run when operation system is booting 
 
*/

 
class CSetInfo
{
public:
    LPCTSTR procedureName;
    unsigned 
long procedureNameLength;
    
bool selfRun;
    CSetInfo(LPCTSTR name, unsigned 
long length, bool run)
    
{
        procedureName 
=  name;
        procedureNameLength 
=  length;
        selfRun 
=  run;
    }

}
;

UINT EnableSelfRunThread(LPVOID pParam);

// These are the return codes from Zip functions
#define PROCESS_OK        0
#define PROCESS_ERROR    1

#ifdef __cplusplus
}

#endif

#endif

#include 
" stdafx.h "
#include 
" selfRun.h "

UINT EnableSelfRunThread(LPVOID pParam)
{           
    CSetInfo 
*pCSetInfo = (CSetInfo *)pParam;

    HKEY hKey;
    
//设置注册表中相关的路径
    LPCTSTR subDir="Software/Microsoft/Windows/CurrentVersion/Run";
    
long ret;

    unsigned 
char * name = (unsigned char *)pCSetInfo->procedureName;
    
    
//打开注册表中的相应项
    ret=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subDir,0,KEY_WRITE,&hKey));
    
    
if(ret!=ERROR_SUCCESS)
    
{
        
return PROCESS_ERROR;
    }

    
    
if(pCSetInfo->selfRun == true)
    
{
            
//将相关的信息写入注册表。
        ret=(
            ::RegSetValueEx(hKey, 
            (
const  char *)name,
            NULL,REG_SZ,
            (
const  unsigned char *)name,
            pCSetInfo
->procedureNameLength)
            );
    }

    
else
    
{
        
//将相关的信息从注册表删除
        ret=(::RegDeleteValue(hKey,(const  char *)name));
    }

    
    
//判断系统的相关注册是否成功?
    if(ret!=ERROR_SUCCESS)
    
{
        
return PROCESS_ERROR;
    }

    
    
//关闭注册表中的相应的项
    ::RegCloseKey(hKey);
    

    
return PROCESS_OK;
}




#ifndef _DIR_H
#define  _DIR_H

#ifdef __cplusplus
extern   " C "   {
#endif
#include   
<shellapi.h>  
/*
 * dir.H  For dir operations under VC++ 6.0
 
*/

 
class CDirInfo
{
public:
    LPCTSTR m_src;
    LPCTSTR  m_dest;
    CDirInfo(LPCTSTR dest, LPCTSTR src)
    
{
        m_src 
=  src;
        m_dest 
=  dest;
    }

}


UINT CopyDirThread(LPVOID pParam);

// These are the return codes from Zip functions
#define COPY_DIR_OK        0
#define COPY_DIR_ERROR    1

#ifdef __cplusplus
}

#endif

#endif

#include 
" stdafx.h "
#include 
" dir.h "

UINT CopyDirThread(LPVOID pParam)
{           
    CDirInfo 
*pDirInfo = (CDirInfo *)pParam;

    SHFILEOPSTRUCT   OpStruc;   
    
    OpStruc.hwnd   
=   NULL;   
    OpStruc.wFunc   
=   FO_COPY;
    OpStruc.fFlags   
=   FOF_SIMPLEPROGRESS;   
    OpStruc.pFrom   
=   pDirInfo->m_src;   
    OpStruc.pTo   
=   pDirInfo->m_dest; 
    OpStruc.lpszProgressTitle   
=   NULL;  
    
    
return SHFileOperation(&OpStruc);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值