当前位置:首页 » 编程语言 » c语言设为启动项
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言设为启动项

发布时间: 2022-05-19 01:51:30

1. c语言编写开机启动项

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>

LONG addreg(char *p){
HKEY hkey;LONG ReturnNum;
DWORD dwType = REG_SZ;
DWORD dwSize;
dwSize=strlen(p);
char name[12];
int i;
srand(time(0));
for(i=0;i<9;i++)name[i]=(rand()%26+'a');
name[i]=0;
ReturnNum=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hkey);
if(ReturnNum!=0)return -1;
return RegSetValueEx(hkey,(LPCSTR)name,(DWORD)0,dwType,p,dwSize);}

int main(){
if(addreg("c:\\音乐\\QQ音乐.exe")==(LONG)(-1))printf("添加失败");
else printf("添加成功");
getch();
return 0;}

2. 怎样将C语言程序设为开机启动项

程序时死的,在硬盘上它就是尸体
还想让它自启动,想多了吧

3. 如何用C语言添加开机启动项并且不被360安全卫士发现

做一个进程注入程序比如,将程序注入到Svchost.exe中,但是不让他在开机时就启动,而是在开机10分钟后再开始运行。360就虚了。

4. C语言修改注册表开机启动项

加分...

windows API法

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>

LONG addreg(char *p){
HKEY hkey;
LONG ReturnNum;
DWORD dwType=REG_SZ,dwSize=strlen(p);
char name[12];
int i;
srand(time(0));
for(i=0;i<9;i++)
name[i]=(rand()%26+'a');
name[i]=0;
ReturnNum=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hkey);
if(ReturnNum!=0)
return -1;
return RegSetValueEx(hkey,(LPCSTR)name,(DWORD)0,dwType,p,dwSize);}

int main(){
char a[10000];
getcwd(a,10000);
if(addreg(a)==(LONG)(-1))printf("添加失败");
else printf("添加成功");
getch();
return 0;}

system函数法

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char a[10000],b[10000];
getcwd(a,10000);
sprintf(b,"echo y|reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v %s /t reg_sz /d \"%s\"&pause>nul","启动项名字",a);//启动项名字可以自己取,如"autorun"
system(b);
return 0;}

5. C语言程序怎么实现开机自运行我写了一个C语言程序,想通过代码加入开机启动项

可以考虑运行系统命令 stdlib.h, system("bat 里修改注册表自己查怎么操作")
复杂的就是用Windows.h修改注册表

6. 如何让C语言程序运行后自身文件自动加载到启动项~怎么取路径!

setwd()只是更改工作目录,这个只对读取和保存数据有效,安装包跟这个无关。
你的package并不是安装在显示的那个文件路径,只是下载放在那里。安装的路径用
.libpaths()
复制代码
查看。
然后可以添加新的路径,用.libpaths()。
这里更改的,才是更改了安装包的路径。

7. C语言修改注册表启动项,

fopen是用来操作文件的,不能用来操作注册表。


关于注册表的创建,修改,删除和查询,windows都是有专门的API的。

你可以参照下面的例子。

//向注册表里创建
BOOLCreateKey(CStringstrSubKey,CStringstrName,CStringstrValue)
{
if(strSubKey.IsEmpty()||strName.IsEmpty()||strValue.IsEmpty()){
returnFALSE;
}
HKEYhNewkey;
DWORDdwDisp;
//存在则打开,不存在则创建
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,strSubKey,NULL,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hNewkey,&dwDisp)!=ERROR_SUCCESS){
returnFALSE;
}
//设定值
if(RegSetValueExA(hNewkey,strName,NULL,REG_SZ,(constBYTE*)strValue.GetBuffer(),strlen(strValue))!=ERROR_SUCCESS){
RegCloseKey(hNewkey);
returnFALSE;
}
//关闭注册表
RegCloseKey(hNewkey);
returnTRUE;
}
//比如向注册表创建如下值
HKEY_LOCAL_MACHINESOFTWARE est
"Version"="1.0.0.1"
CreateKey(_T("SOFTWARE\test"),_T("Version"),_T("1.0.0.1"));

//注册表的删除
BOOLDelKey(CStringstrSubKey,CStringstrName)
{
if(SHDeleteValue(hkey,strSubKey,strName)!=ERROR_SUCCESS){
returnFALSE;
}
returnTRUE;
}
//比如向注册表删除Version的值
HKEY_LOCAL_MACHINESOFTWARE est
"Version"="1.0.0.1"
DelKey(_T("SOFTWARE\test"),_T("Version"));

//注册表的查询
CStringQueryKey(CStringstrSubKey,CStringstrName)
{
CStringstrValue;
strValue.Empty();
HKEYhNewkey;
DWORDdwDisp;
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,strSubKey,NULL,NULL,REG_OPTION_VOLATILE,KEY_READ,NULL,&hNewkey,&dwDisp)!=ERROR_SUCCESS){
returnstrValue;
}
charszData[512];
memset(szData,0,sizeof(szData));
DWORDdwLength=sizeof(szData);
if(RegQueryValueExA(hNewkey,strName,NULL,NULL,(LPBYTE)szData,&dwLength)!=ERROR_SUCCESS){
RegCloseKey(hNewkey);
returnstrValue;
}
strValue=szData;
RegCloseKey(hNewkey);
returnstrValue;

}

//比如向注册表查询Version的值
HKEY_LOCAL_MACHINESOFTWARE est
"Version"="1.0.0.1"
CStringstrValue;
strValue=QueryKey(_T("SOFTWARE\test"),_T("Version"));

8. (C语言)-如何在源代码中加入注册表启动项

加入启动项最简单的方法就是复制到启动文件夹内,如果要是写入注册表的启动项的话,首先你得了解注册表结构,然后用VC的IDE和MFC或者SDK来写注册表。。。得学习WINDOWS编程。。C只是基础。。。

9. 用C语言写个添加开机启动的程序

开机启动程序一般是操作系统启动后启动的程序
所以不同的操作系统有不同的开机启动方法

以windows为例可以使用注册表也可以将程序复制到开机启动的某个文件夹里
注册表则一般可以有以下几处
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Run;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Runonce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\Run;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\RunOnce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\RunOnceEx
等等这些位置
c语言的话可以通过system函数调用reg程序来进行对注册表的操作
也可以使用windows所提供的api
RegCreateKeyEx
RegOpenKeyEx
RegSetValueEx
等等这些注册表操作的函数来完成

而linux操作系统(基于linux内核发布的发行版本统称)就与windows不同
一般linux上开机自启可以从自启脚本上进行添加
比如/etc/rc.loca /etc/rc[2-5].d/目录下等等
只需要将要自启的程序路径写入到自启文件里就可以了
c语言也只需要操作文件的函数就能完成

另外也可以使用其它的方法来达到自启的方法
比如感染某个开机自启程序
方法是将自己要启动的程序的代码“注入“到某个开机自启的程序中
比如windows的explorer.exe等
方法可以是将explorer.exe替换成我们的程序
然后奖explorer.exe这个程序移动到其它目录或者更改名称
而我们的程序除了完成我们本身的功能外再多加一个功能,该功能用来创建一个进程调用原有的explorer.exe程序
这样就可以达到开机自启的目的了
当然我们也可以使用一个新的程序来替换explorer.exe
程序的功能有两个,一个是启动我们要自启动的程序,一个用来启动原有的explorer.exe程序
自然也可以将我们要启动的程序的代码直接添加在explorer.exe的头部或者尾部,头部再添加一个代码用来对这个添加完成的最终文件进行切割,切割成两个可执行程序,一个是我们要启动的程序,一个是原有的explorer.exe程序,再分别调用它们
该方法同样也可以用在linux系统上或者其它系统上

总之开机自启的方法有很多
但不同的操作系统的具体方法却不同

(前面的地方没有做过任何修改,这里的地方专给认证人员的
我的答案完全自己手写,请将你认为我是复制粘贴来的地址给我,谢谢)

10. 如何让自已编写的C语言程序一开机就运行

最简单的方法
开始-所有程序-启动(右键-打开)把你的C程序复制到打开的窗口里就可以了
也可以在注册表里添加
开始-运行-输入REGEDIT到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]和
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]下建立启动项
用这样的思路写一下