VB.net 资源文件读写(EXE)解决方案

VB.net 资源文件读写(EXE)
求教VB.net如何读写EXE附带的资源文件(非.res文件,.exe文件)
一直在网上搜索此类问题答案,却没有可行的,
大多数都只是用Resources.ResourceWriter写res文件。


我有一段VB实现的代码:
VB code

Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Boolean) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As Any, ByVal lpName As Any, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Boolean) As Long


Private Function WriteRes(ByVal ResFileName As String, ByVal WriteFileName As String, ByVal ResType As String, ByVal ResID As Long) As Boolean
Dim VbArrayRes() As Byte '写入内容
Dim hUpdate As Long '被写入的目标文件路径
Dim Ret As Long '资源句柄
Dim ResTypeX As String
    ResTypeX = StrConv(ResType, vbUpperCase) '将资源标识符
    hUpdate = BeginUpdateResource(WriteFileName, False) '打开要写入的目标文件
    ReDim VbArrayRes(FileLen(ResFileName) - 1) '计算资源文件大小
    Open ResFileName For Binary As #1 '获取资源文件内容
        Get #1, , VbArrayRes
    Close #1
    Ret = UpdateResource(hUpdate, ResTypeX, ResID, 0, VbArrayRes(0), UBound(VbArrayRes) + 1) '添加资源
        If Ret <> 0 Then
            WriteRes = True
        End If
    '关闭资源更新
    Ret = EndUpdateResource(hUpdate, False)
End Function


用VB的时候直接用这个函数就可以了,很方便,请会的人赐教VB.net怎么能做到相同的效果。
如果有时间,请帮忙按照下面格式写个函数,
WriteRes(ByVal ResFileName As String, ByVal WriteFileName As String, ByVal ResType As String, ByVal ResID As Long) As Boolean
没有时间的话告诉我一下大概的实现方法,我自己发掘好了

谢谢大家~

------解决方案--------------------
2楼是直接拿VB6转VB.NET的工具转的,楼主自己调试一下,查看一下API声明是否正确
调用是否正确.
VB6能干的事,VB.NET丝毫不差

探讨
谢谢你能帮我看问题,可是好像没用啊……

同样用WriteRes "E:\aaa", "E:\test.exe", "CUSTOM", 101
VB能写进去,而VB.net不能写进去

可能这种方法已经行不通了,要另外找方法吧~

------解决方案--------------------
VB.NET code

'完整的.

Public Class Form1

    'VB.NET API声明
    Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" _
        (ByVal pFileName As String, ByVal bDeleteExistingResources As Boolean) As Integer

    Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" _
        (ByVal hUpdate As Integer, _
             ByVal lpType As String, _
             ByVal lpName As Integer, _
             ByVal wLanguage As Integer, _
             ByRef lpData As Byte, _
         ByVal cbData As Integer) As Integer

    Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" _
        (ByVal hUpdate As Integer, ByVal fDiscard As Boolean) As Integer


    Private Function WriteRes(ByVal ResFileName As String, ByVal WriteFileName As String, ByVal ResType As String, ByVal ResID As Integer) As Boolean
        Dim VbArrayRes() As Byte '写入内容
        Dim hUpdate As Integer '被写入的目标文件路径
        Dim Ret As Integer '资源句柄
        Dim ResTypeX As String
        ResTypeX = StrConv(ResType, VbStrConv.Uppercase) '将资源标识符
        hUpdate = BeginUpdateResource(WriteFileName, False) '打开要写入的目标文件
        ReDim VbArrayRes(FileLen(ResFileName) - 1) '计算资源文件大小
        FileOpen(1, ResFileName, OpenMode.Binary) '获取资源文件内容
        'UPGRADE_WARNING: Get 已升级到 FileGet 并具有新行为。 
        FileGet(1, VbArrayRes)
        FileClose(1)
        Ret = UpdateResource(hUpdate, ResTypeX, ResID, 0, VbArrayRes(0), UBound(VbArrayRes) + 1) '添加资源
        If Ret <> 0 Then
            WriteRes = True
            'Return True
        End If
        '关闭资源更新
        Ret = EndUpdateResource(hUpdate, False)
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WriteRes("E:\aaa", "E:\test.exe", "CUSTOM", 101)
    End Sub
End Class