none
VB.NET中WriteAllBytes的一个小问题 RRS feed

  • 问题

  •        
    问题是这样的

    在C盘下有个cmd.exe 以及一个记事本程序notepad.exe

    我用ReadAllBytes将cmd文件读取到一个byte数组中,然后将它以追加的方式写到notepad(记事本程序)

    如下:
            Dim cmdbyte() As Byte = My.Computer.FileSystem.ReadAllBytes("c:\cmd.exe")
            My.Computer.FileSystem.WriteAllBytes("c:\notepad.exe", cmdbyte, True)

    我发现 记事本程序 原大小大约 65kb 这样写入后的大小 大约 525kb

    我双击运行记事本并没有附带启动cmd.....这个问题有点难以描述,,,

    我的想法是 既然将cmd追加写到了记事本里面,应该能在运行记事本后运行cmd才是

    ....我知道这个问题有点傻...但是我想知道为什么没有运行cmd?

    追加的那一部分执行了没有?

    额..还希望老师们赐教......

    2009年12月30日 12:34

答案

  • 你好!
         你这样当然不可以了啊!
         你把一个程序的二进制码写入另外一个程序并不会在执行那个程序后就执行你写入的程序的!
         你可以了解一些PE文件的结构:
    http://blog.csdn.net/titilima/archive/2003/12/25/21442.aspx
         并非是你认为的直接”拼接“就可以组合的!
    周雪峰
    • 已标记为答案 magic_os 2010年1月2日 5:20
    2009年12月30日 16:07
    版主

全部回复

  • 你好!
         你这样当然不可以了啊!
         你把一个程序的二进制码写入另外一个程序并不会在执行那个程序后就执行你写入的程序的!
         你可以了解一些PE文件的结构:
    http://blog.csdn.net/titilima/archive/2003/12/25/21442.aspx
         并非是你认为的直接”拼接“就可以组合的!
    周雪峰
    • 已标记为答案 magic_os 2010年1月2日 5:20
    2009年12月30日 16:07
    版主
  • 谢谢周版主 ~ 呵呵 在下是初学者嘛

    我得去看一下PE文件结构~ 呵呵 谢谢你~!
    2010年1月2日 5:22
  • 不客气啊!
    周雪峰
    2010年1月2日 7:12
    版主