拈花小仙 发表于 2014-2-20 19:40:11

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

本帖最后由 拈花小仙 于 2014-3-22 10:12 编辑

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

machimilk 发表于 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调用正常

拈花小仙 发表于 2014-2-20 22:35:22

machimilk 发表于 2014-2-20 21:27 static/image/common/back.gif
希望你能举一反三,dos命令很多,大多数都能用system调用正常

如果将程序自身移动到启动文件夹?
还有增加注册表项,该怎么实现?

machimilk 发表于 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空格 启动文件夹的完全路径 回车

拈花小仙 发表于 2014-2-21 00:10:26

machimilk 发表于 2014-2-20 23:54 static/image/common/back.gif
建议你学习一下dos命令

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


#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    system("C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs");
    return 0;
}启动文件夹的路径我不会写

拈花小仙 发表于 2014-2-21 00:16:03

machimilk 发表于 2014-2-20 23:54 static/image/common/back.gif
建议你学习一下dos命令

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


还有怎么复制自身文件到启动文件夹,这个程序别人下了,可能会存到不同的文件夹中

machimilk 发表于 2014-2-21 00:24:26

本帖最后由 machimilk 于 2014-2-21 00:27 编辑

拈花小仙 发表于 2014-2-21 00:16 static/image/common/back.gif
还有怎么复制自身文件到启动文件夹,这个程序别人下了,可能会存到不同的文件夹中

可以用环境变量啊,"%ALLUSERSPROFILE%\「开始」菜单\程序\启动"当然这是中文版,你要考虑到其他版本
不如用注册表regadd HKLM\software\microsoft\windows\currentversion\run /v "你想起的键名" /t REG_SZ /d "应用程序完整路径" /f

拈花小仙 发表于 2014-2-21 00:27:44

machimilk 发表于 2014-2-21 00:24 static/image/common/back.gif
可以用环境变量啊,%system% 之类的

您能写出。复制自身到启动文件夹的代码吗?我会多多追加的

machimilk 发表于 2014-2-21 00:30:31

拈花小仙 发表于 2014-2-21 00:27 static/image/common/back.gif
您能写出。复制自身到启动文件夹的代码吗?我会多多追加的

写这个很简单啊,用注册表写就行,你不确定你的程序的路径还是其他

拈花小仙 发表于 2014-2-21 00:32:33

machimilk 发表于 2014-2-21 00:24 static/image/common/back.gif
可以用环境变量啊,"%ALLUSERSPROFILE%\「开始」菜单\程序\启动"当然这是中文版,你要考虑到其他版本
不 ...

还是不懂哦,您能写成代码吗?只需system里面的

拈花小仙 发表于 2014-2-21 00:33:58

machimilk 发表于 2014-2-21 00:30 static/image/common/back.gif
写这个很简单啊,用注册表写就行,你不确定你的程序的路径还是其他

我还想知道启动文件夹的,因为启动文件夹,开机时有快捷键,让启动文件夹不好使。这样防人乱动我电脑哦。

拈花小仙 发表于 2014-2-21 00:34:29

machimilk 发表于 2014-2-21 00:30 static/image/common/back.gif
写这个很简单啊,用注册表写就行,你不确定你的程序的路径还是其他

嗯,我无法找到win7启动文件夹位置,xp好找

machimilk 发表于 2014-2-21 00:45:55

拈花小仙 发表于 2014-2-21 00:34 static/image/common/back.gif
嗯,我无法找到win7启动文件夹位置,xp好找

win7的启动文件夹好像是不同的用户位置也不一样,所以还是注册表保险

拈花小仙 发表于 2014-2-21 00:52:39

machimilk 发表于 2014-2-21 00:45 static/image/common/back.gif
win7的启动文件夹好像是不同的用户位置也不一样,所以还是注册表保险

启动文件夹可以开机按shift跳过,我主要想写一个保护自己机器数据的,只是自己用。防同事乱动我电脑

machimilk 发表于 2014-2-21 00:56:46

那方法更多了,你可以把你的用户设置密码啊,或者把自己写的这个程序放windows文件夹下面,然后注册表启动指向他,一启动保证开这个程序,然后这个程序设计一个退出的密码,你可以输入密码使用啊

拈花小仙 发表于 2014-2-21 00:58:41

machimilk 发表于 2014-2-21 00:56 static/image/common/back.gif
那方法更多了,你可以把你的用户设置密码啊,或者把自己写的这个程序放windows文件夹下面,然后注册表启动指 ...

还是不能做到插入到启动文件夹吗?用快捷键多方便呀

machimilk 发表于 2014-2-21 01:02:10

拈花小仙 发表于 2014-2-21 00:58 static/image/common/back.gif
还是不能做到插入到启动文件夹吗?用快捷键多方便呀

如果你电脑用,放到启动文件夹当然非常容易,如果这个东西想发布,要考虑多个电脑,xp的win7的,各种语言版本还有就是不同的windows登陆用户 启动文件夹位置是不同的,也不是不能做成放启动文件夹,就是非常麻烦不值得,如果你要一按shift就跳过那你成注册表的,检测shift键就好了

machimilk 发表于 2014-2-21 03:35:44

拈花小仙 发表于 2014-2-21 00:58 static/image/common/back.gif
还是不能做到插入到启动文件夹吗?用快捷键多方便呀
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{       
      char strUser ={0};//定义一个接收当前登录windows的用户的字符数组
        char strDriver={0};//定义一个接收windows系统文件夹的字符数组
        char strEXE={0};//定义一个接收当前执行程序的文件名的字符数组
        char Drv;//定义一个盘符
        DWORD dwSize = 256;
      GetUserNameA(strUser,&dwSize);//获取当前登录windows的用户名
      GetSystemDirectoryA(strDriver,256);//获取系统文件夹
        GetModuleFileNameA(NULL,strEXE,256);
        Drv=strDriver;//盘符确定了
        char cmd={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);
}
页: [1]
查看完整版本: C语言中关于system("");