标题:复制文件自身至windows\system32\ 想当然是很简单的一段代码 但是由于对宽 ...
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
结帖率:99.76%
已结贴  问题点数:20 回复次数:7 
复制文件自身至windows\system32\ 想当然是很简单的一段代码 但是由于对宽字符的不太了解 一波三折 最终还是弄好了
程序代码:
#include <stdio.h>
#include <windows.h>
int main()
{
    WCHAR DestFileName[]=L"c:\\\\windows\\\\system32\\\\wscmp.exe";
    WCHAR szLongPathName[256];
    WCHAR fullpath[256*2];
    GetModuleFileName(NULL, szLongPathName, 256);
    int i=0;
    int j=0;
    while(szLongPathName[i]!='\0')
    {
        if(szLongPathName[i]==0x5c)
        {
            fullpath[j]=0x5c;
            j++;
            fullpath[j]=0x5c;
            j++;
            fullpath[j]=0x5c;
            j++;
            fullpath[j]=0x5c;
        }
        else fullpath[j]=szLongPathName[i];
        i++;
        j++;
    }
    fullpath[j]='\0';
    fullpath[j++]='\0';
    BOOL Success=CopyFile(fullpath,DestFileName,FALSE);
    if(Success!=0) printf("文件复制成功\n");
    return 0;
}
搜索更多相关主题的帖子: windows color 
2013-08-07 22:00
月祭樱冢
Rank: 2
等 级:论坛游民
帖 子:83
专家分:97
注 册:2013-7-15
得分:7 
表示看不懂

算法是程序的灵魂
2013-08-07 22:02
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
也没啥玩意  就2个api函数而已

DO IT YOURSELF !
2013-08-07 22:08
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
得分:7 
版主厉害
2013-08-07 22:23
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:7 
有空交流一下,我有本windows API编程书,现在正在看

思考赐予新生,时间在于定义
2013-08-07 23:00
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 5楼 love云彩
欢迎

DO IT YOURSELF !
2013-08-08 07:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <windows.h>

int main()
{
    const wchar_t* DestFileName = L"c:\\windows\\system32\\wscmp.exe";

    wchar_t szLongPathName[MAX_PATH];
    GetModuleFileNameW(NULL, szLongPathName, MAX_PATH);

    BOOL Success = CopyFileW(szLongPathName, DestFileName, FALSE);
    if( Success )
        printf("文件复制成功\n");

    return 0;
}

程序代码:
#include <stdio.h>
#include <windows.h>

int main()
{
    const wchar_t* DestFileName = L"wscmp.exe";

    wchar_t sysfolder[MAX_PATH];
    GetSystemDirectoryW( sysfolder, MAX_PATH );
    wcscat( sysfolder, L"\\" );
    wcscat( sysfolder, DestFileName );

    WCHAR szLongPathName[MAX_PATH];
    GetModuleFileNameW(NULL, szLongPathName, MAX_PATH);

    BOOL Success = CopyFileW(szLongPathName, sysfolder, FALSE);
    if( Success )
        printf("文件复制成功\n");

    return 0;
}

2013-08-08 08:32
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 7楼 rjsp
哦   多谢了

我好想明白咋回事了

DO IT YOURSELF !
2013-08-08 08:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-418765-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.045398 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved