码迷,mamicode.com
首页 > 编程语言 > 详细

VS2012+C语言+设置程序开机自动启动+示例

时间:2014-05-05 12:29:50      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:替换字符串   程序   include   

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
char* ReplaceString(const char *srcStr, const char *src, const char *dest)  //替换字符串,获得文件路径
{  
    char *ptr;
    int len = strlen(srcStr);
    ptr = (char*)malloc(sizeof(char)*len+1);
    strcpy(ptr, srcStr);       
      
    for ( int i=0; i<len; ++i )
    {
        if ( 0==strncmp(&ptr[i], src, strlen(src)) )    //查找想要被替换字符串的起始位置
        {           
            strncpy(&ptr[i], dest, strlen(dest));   //替换字符串的长度为目标字符串的长度
        }   
    }   
    ptr[len+strlen(dest)-strlen(src)] = ‘\0‘;   //计算出字符串结束位置,并加上‘/0’
    return ptr;
}
int StartupRun(const char *key, const char *path)   //key启动项名称,path为要开机启动的程序
{
    HKEY hKey;
    DWORD dwDisposition;
    LONG result = RegCreateKeyEx(   //用来创建注册表键,如果该键已经存在,则打开它(注册表键不区分大小写)
        HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
        NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
        NULL, &hKey, &dwDisposition );
          
    if(result != ERROR_SUCCESS)
    {
        RegCloseKey(hKey);
        return 0;
    }
    result = RegSetValueEx(hKey, key, NULL, REG_SZ, (const unsigned char *)path, strlen(path)+1);   //在注册表项下设置指定值的数据和类型。
      
    if(result != ERROR_SUCCESS)
    {
        RegCloseKey(hKey);
        return 0;
    }
    RegCloseKey(hKey);
    return 1;
}
int main(int argc,char *argv[])
{
    //StartupRun("偷闲--开机启动程序", "C:\\Users\\Administrator\\Documents\\Visual Studio 2012\\Projects\\tx\\Release\\tx.exe");   //绝对路径
    //StartupRun("偷闲--开机启动程序", ".\\tx.exe");//不可用
    printf("获取程序当前路径:");
    printf(argv[0]);    //argv[0]为当前程序的路径
    printf("\n");
          
    const char *str;
    str = ReplaceString(argv[0], "StartRun.exe", "tx.exe"); //StartRun.exe为当前程序的名称,tx.exe为想要开机启动程序的名称,二者在同一目录下
    StartupRun("偷闲--开机启动程序1.0", str);
      
    printf("\n设置开机启动程序路径:");
    printf(str);
    printf("\n\n设置成功\n\n");
      
    system("pause");
    return 0;
}


VS2012+C语言+设置程序开机自动启动+示例,布布扣,bubuko.com

VS2012+C语言+设置程序开机自动启动+示例

标签:替换字符串   程序   include   

原文地址:http://leibnitz.blog.51cto.com/6061016/1405770

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!