鱼C论坛

 找回密码
 立即注册
查看: 4239|回复: 17

C语言中关于system("");

[复制链接]
发表于 2014-2-20 19:40:11 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 拈花小仙 于 2014-3-22 10:12 编辑

请罗列一些关于system("");的用法,调用某些DOS命令时,用法稍有不同的请举例,相同的就不用了。
怎样用system将任意一个程序,移动到任意一个目录,如启动文件夹?
如果将程序自身移动到启动文件夹?
还有增加注册表项,该怎么实现?

最佳答案

查看完整内容

希望你能举一反三,dos命令很多,大多数都能用system调用正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-20 19:40:12 | 显示全部楼层
int main()
{
        system("md c:\\abc");//在c盘根目录建立abc文件夹
        system("copy c:\\Windows\\notepad.exe c:\\abc");//把windows目录下的记事本复制到abc文件夹
        system("start c:\\abc\\notepad.exe");//执行复制过去的记事本
    system("pause");
        return(0);
} 
希望你能举一反三,dos命令很多,大多数都能用system调用正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-20 22:35:22 | 显示全部楼层

如果将程序自身移动到启动文件夹?
还有增加注册表项,该怎么实现?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-20 23:54:33 | 显示全部楼层
本帖最后由 machimilk 于 2014-2-20 23:56 编辑
int main()

{
        system("reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v notapad /t REG_SZ /d c:\\windows\\notepad.exe");
        //上面这行就可以把 记事本添加到启动注册表
        //另外刚才的例子已经可以执行 指定文件夹下面的程序,你把路径改成启动文件夹,文件名改成你要的就好了
        //一定要举一反三啊
    system("pause");
        return(0);
} 
建议你学习一下dos命令

你说的程序本身弄到启动文件夹格式就是

copy 完全路径\你的文件名.exe空格 启动文件夹的完全路径 回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:10:26 | 显示全部楼层
machimilk 发表于 2014-2-20 23:54
建议你学习一下dos命令

你说的程序本身弄到启动文件夹格式就是
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    system("C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs");
    return 0;
}
启动文件夹的路径我不会写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:16:03 | 显示全部楼层
machimilk 发表于 2014-2-20 23:54
建议你学习一下dos命令

你说的程序本身弄到启动文件夹格式就是

还有怎么复制自身文件到启动文件夹,这个程序别人下了,可能会存到不同的文件夹中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 00:24:26 | 显示全部楼层
本帖最后由 machimilk 于 2014-2-21 00:27 编辑
拈花小仙 发表于 2014-2-21 00:16
还有怎么复制自身文件到启动文件夹,这个程序别人下了,可能会存到不同的文件夹中


可以用环境变量啊,"%ALLUSERSPROFILE%\「开始」菜单\程序\启动"当然这是中文版,你要考虑到其他版本
不如用注册表reg  add HKLM\software\microsoft\windows\currentversion\run /v "你想起的键名" /t REG_SZ /d "应用程序完整路径" /f
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:27:44 | 显示全部楼层
machimilk 发表于 2014-2-21 00:24
可以用环境变量啊,%system% 之类的

您能写出。复制自身到启动文件夹的代码吗?我会多多追加的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 00:30:31 | 显示全部楼层
拈花小仙 发表于 2014-2-21 00:27
您能写出。复制自身到启动文件夹的代码吗?我会多多追加的

写这个很简单啊,用注册表写就行,你不确定你的程序的路径还是其他
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:32:33 | 显示全部楼层
machimilk 发表于 2014-2-21 00:24
可以用环境变量啊,"%ALLUSERSPROFILE%\「开始」菜单\程序\启动"当然这是中文版,你要考虑到其他版本
不 ...

还是不懂哦,您能写成代码吗?只需system里面的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:33:58 | 显示全部楼层
machimilk 发表于 2014-2-21 00:30
写这个很简单啊,用注册表写就行,你不确定你的程序的路径还是其他

我还想知道启动文件夹的,因为启动文件夹,开机时有快捷键,让启动文件夹不好使。这样防人乱动我电脑哦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:34:29 | 显示全部楼层
machimilk 发表于 2014-2-21 00:30
写这个很简单啊,用注册表写就行,你不确定你的程序的路径还是其他

嗯,我无法找到win7启动文件夹位置,xp好找
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 00:45:55 | 显示全部楼层
拈花小仙 发表于 2014-2-21 00:34
嗯,我无法找到win7启动文件夹位置,xp好找

win7的启动文件夹好像是不同的用户位置也不一样,所以还是注册表保险
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:52:39 | 显示全部楼层
machimilk 发表于 2014-2-21 00:45
win7的启动文件夹好像是不同的用户位置也不一样,所以还是注册表保险

启动文件夹可以开机按shift跳过,我主要想写一个保护自己机器数据的,只是自己用。防同事乱动我电脑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 00:56:46 | 显示全部楼层
那方法更多了,你可以把你的用户设置密码啊,或者把自己写的这个程序放windows文件夹下面,然后注册表启动指向他,一启动保证开这个程序,然后这个程序设计一个退出的密码,你可以输入密码使用啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-21 00:58:41 | 显示全部楼层
machimilk 发表于 2014-2-21 00:56
那方法更多了,你可以把你的用户设置密码啊,或者把自己写的这个程序放windows文件夹下面,然后注册表启动指 ...

还是不能做到插入到启动文件夹吗?用快捷键多方便呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 01:02:10 | 显示全部楼层
拈花小仙 发表于 2014-2-21 00:58
还是不能做到插入到启动文件夹吗?用快捷键多方便呀

如果你电脑用,放到启动文件夹当然非常容易,如果这个东西想发布,要考虑多个电脑,xp的win7的,各种语言版本还有就是不同的windows登陆用户 启动文件夹位置是不同的,也不是不能做成放启动文件夹,就是非常麻烦不值得,如果你要一按shift就跳过那你成注册表的,检测shift键就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 03:35:44 | 显示全部楼层
拈花小仙 发表于 2014-2-21 00:58
还是不能做到插入到启动文件夹吗?用快捷键多方便呀
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{        
        char strUser[256] ={0};//定义一个接收当前登录windows的用户的字符数组
        char strDriver[256]={0};//定义一个接收windows系统文件夹的字符数组
        char strEXE[256]={0};//定义一个接收当前执行程序的文件名的字符数组
        char Drv;//定义一个盘符
        DWORD dwSize = 256;
        GetUserNameA(strUser,&dwSize);//获取当前登录windows的用户名
        GetSystemDirectoryA(strDriver,256);//获取系统文件夹
        GetModuleFileNameA(NULL,strEXE,256);
        Drv=strDriver[0];//盘符确定了
        char cmd[256]={0};//定义一个最终拼接好的执行字串

        OSVERSIONINFOA OSVer;//定义一个接收操作系统版本信息的结构体
        OSVer.dwOSVersionInfoSize=sizeof(OSVERSIONINFOA);
        GetVersionExA(&OSVer);//获得操作系统信息
        if (OSVer.dwMajorVersion>=6)//如果是win7就按win7的方式拼接
        {
                cout<<"操作系统版本--->Win7或更高"<<endl<<"当前用户名----->"<<strUser<<endl<<"系统文件夹----->"<<strDriver<<endl<<"系统盘符------->"<<Drv<<endl<<"绝对路径文件名->"<<strEXE<<endl;
                sprintf_s(cmd, "copy /y "%s" "%c:\\Users\\%s\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\startup" >nul ",strEXE,Drv,strUser);
        }else//如果是xp就按xp的方式拼接命令
        {
                cout<<"操作系统版本--->WinXP或更低"<<endl<<"当前用户名----->"<<strUser<<endl<<"系统文件夹----->"<<strDriver<<endl<<"系统盘符------->"<<Drv<<endl<<"绝对路径文件名->"<<strEXE<<endl;
                sprintf_s(cmd, "copy /y "%s" "%c:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动" >nul ",strEXE,Drv);
        }
        system("@echo off");//让这命令本身不在命令行显示
        system(cmd);//执行拼接好的命令
        system("@echo on");//恢复命令行的显示
        system("pause");
        return(0);
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 10:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表