类似于一些病毒程序,主程序文件名是 A.exe ,存在于 C:\download 文件夹内,双击运行之后会在 C:\Windows\system32 文件夹内产生一个 B.exe 文件,请问要怎么做才能实现?

解决方案 »

  1.   

    将编译好的B.EXE作为A.EXE的资源文件编译即可
      

  2.   

    从程序中生成Exe文件
      这篇文章要讨论的是在一个VB程序中如何产生出另一个Exe文件。
      要实现这个目的,必须符合以下几个条件:
        第一、编写这样的程序时,具备欲生成的Exe文件
        第二、事先知道欲生成的Exe文件大小
      其实这两个条件可以说不是条件,但确实很重要。
      为了叙说方便,将发行的程序称作APP-1.Exe,要生成的文件叫APP-2.Exe,以下是具体步骤:    第一步,准备好APP-2.Exe,这里我使用VB写了一个什么都不做程序,编译成APP-2.Exe。
        第二步,右键单击单击APP-2.Exe,选择属性,记下文件大小。注意,应记下以字节为单位的具体数字,而不是多少k。
        这样就具备了前边说的两个条件。
        第三步,新建工程APP1,新建资源文件加入工程,在资源文件编辑器中添加自定义资源(CUSTOM),资源号使用默认的101。值得注意的是,每个资源号对应的资源项对资源大小的要求是有限制的,我记得时64K,因此如果APP-2.Exe的大小如果大于这个数的话,就要麻烦一些。如果是这样,我们的写另一个程序,把APP-2.Exe一个字节一个字节的读出来,每64K生成一个文件,然后再把这些文件分别写道资源文件的101、102......资源项中,代码也要作相应的修改。    第四步,为APP-1.Exe编写代码,使其读取资源文件的数据,生成APP-1.Exe。  代码如下:  Private Const FILESIZEOFAPP2 = 20480 '我生成的APP-2.Exe大小是20480Byte
      Private Sub cmdOK_Click() '单击按钮cmdOK运行代码
        Dim APP2() As Byte 'APP2是个Btye类型和数组
        Dim Counter As Long
        APP2 = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组
        '注意,微软的帮助中对加载定义资源的说明有误,硬是资源标识为"CUSTOM"而非数字
        If Dir(App.Path & "\APP-2.Exe") <> "" Then '第一次按cmdOK有效
          MsgBox App.Path & "\APP-2.Exe 已经存在!" 
          Exit Sub 
        End If
        Open App.Path & "\APP-2.exe" For Binary As #1 '以二进制方式写(生成)APP-2.Exe到APP-1.Exe所在的目录
          For Counter = 0 To FILESIZEOFAPP2 - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终 
            Put #1, , APP2(Counter)
          Next Counter 
        Close #1
        Shell App.Path & "\APP-2.Exe", vbNormalFocus '运行刚生成的APP-2.Exe
        Unload Me
      End Sub可以去看我的BLOG ,转的文章
    http://blog.csdn.net/zou_seafarer/archive/2007/02/07/1504432.aspx