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

#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

时间: 2024-10-29 19:12:12

VS2012+C语言+设置程序开机自动启动+示例的相关文章

巧妙地利用进程分离来设置程序开机自动启动!(附源码)

在GG(高仿QQ)最早的版本中,我就加入了开机自动启动的功能,是通过操作注册表来实现的,但是操作注册表需要管理员权限,这样,就表示必须以管理员的身份来运行GG客户端.这对某些用户来说可能接受不了,因为以这么高的权限来运行一个程序,用户会觉得风险较大.而就从GG的角度来说,也只有在设置或取消开机启动才需要这个权限,而一开始就以管理员身份运行GG,就有点太夸张和浪费了. 一.方案进化 我开始想到的解决方案是,仍然以普通用户的身份启动GG,当需要操作注册表时,再提升至管理员权限.后来通过查资料了解到:

C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)

#region//开机自动运行        private void CB_Auto_CheckedChanged(object sender, EventArgs e)        {//CB_Auto是一个Checkbox,IsAutoRun 是个布尔变量,用于控制是否开机运行            if (CB_Auto.Checked == true) IsAutoRun = true;            else IsAutoRun = false;            tr

cenOS系统,chkconfig设置程序开机自启--mysql、tomcat、redis、fastdfs--nginx/fdfs_trackerd/fdfs_storaged

设置程序开机启动就是将程序的启动脚本添加到/etc/init.d目录下,或者将启动路径写入/etc/rc.d/rc.local文件里面. 设置mysql开机启动 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chkconfig --add mysql chkconfig mysql on 设置fdfs_tracker开机启动 cp /usr/local/src/FastDFS/init.d/fdfs_tracke

设置Oracle11g开机自动启动

设置Oracle11g开机自动启动: 在Redhat和Centos中设置允许ORACLE 系统自动启动,默认情况下是 设置为不允许的. 1.在root 账户下修改/etc/oratab 文件: # vi /etc/oratab orcl=/db/app/oracle/product/11.1.0/db_1 :N     最后的N 改为Y, 2.在oracle 账户下修改ORACLE 自带的启动与关闭脚本,分别是dbstart 和dbshut. 这两个脚本就可以实现ORACLE 脚本的启动与关闭.

cenOS设置程序开机自启动的方法

cenOS设置程序开机自启动的方法主要有两种 1.把启动程序的命令添加到/etc/rc.d/rc.local 文件夹中. eg1.设置开机启动mysql vim /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want

WPF 设置程序开机自动运行(+注册表项)

#region 设置程序开机自动运行(+注册表项) RegistryKey rgkRun = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (rgkRun == null) { rgkRun = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\Cur

Windows设置VMware开机自动启动,虚拟机也启动

很多用windows系统电脑开发的童鞋,会在自己电脑上装一个虚拟机,然后在装一个linux系统当作服务器来使用.但每次电脑开机都要去重启一下虚拟机电源,实在是不划算.下面博主教大家在windows系统上,设置VMware开机自动启动,虚拟机也启动. 首先在某个盘里,找个安静的角落,首先新建一个 vm_start.bat 的文件,然后用编辑器打开,写下 D:\Program Files\VMware\vmrun.exe" start "E:\system\centos6.5-1\cent

C#如何设置程序开机自启动

如果想要将一个exe程序设置为开机自启动,其实就是在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run注册表项中添加一个注册表变量,这个变量的值是程序的所在路径. 具体操作步骤是: 1.使用RegistryKey类的CreateSubKey方法打开HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Ru

ubuntu下设置tomcat开机自动启动

一.ubuntu下设置tomcat开机自动启动 1.进入tomcat下的bin目录 命令:cd   /usr/local/tomcat/apache-tomcat-8.0.48/bin 2.复制catalina.sh到/etc/init.d目录下 命令: sudo  cp  /usr/local/tomcat/apache-tomcat-8.0.48/bin/catalina.sh   /etc/init.d 3.重命名 命令:sudo  rm  /etc/init.d/catalina.sh