这个程序就是用到了3个函数:
1.GetModuleFileName(NULL,cSelfPath,MAX_PATH);
原型如下:
DWORD GetModuleFileName(
HMODULE hModule, // handle to module
LPTSTR lpFilename, // file name of module
DWORD nSize // size of buffer
);
hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。
lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数
nSize DWORD ,装载到缓冲区lpFileName的最大值
2.GetSystemDirectory(cSysPath,MAX_PATH);
这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作
这两个参数就不必介绍了吧。。。。。。。
3 lstrcat(cSysPath,"\\one.exe");就是字符链接到后面去
4CopyFile(cSelfPath,cSysPath,TRUE)
函数原型
BOOL CopyFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName,BOOL bFailIfExists );
说明
复制文件,与vb的filecopy命令相似
返回值
BOOL,非零表示成功,零表示失败。会设置GetLastError
参数表
参数类型及说明 :
lpExistingFileName String,源文件名
lpNewFileName String,目标文件名
bFailIfExists Long,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写
【抄百度的】
反正我是怎么考都烤不到系统盘,其他盘都行
4CopyFile(cSelfPath,“xxxx路径”,TRUE);
测试了一下貌似在win7下fopen在C盘下也不能创建文件。
if (fp2=fopen("C:\\fb.exe","wb"))//C:\Windows
{
printf("成功创建并打开副本!\n");
}
else
{
printf("副本打开失败!\n");
}
失败了。我改D盘就成功了。。。。。。我想可能是windows它不让我们这么做的。
我比较粗心,有什么地方有小错误请谅解哈。
大家多试试哈,好方案可以提供下学习学。
ID:Crazy迷恋