在VB中将ANSI转换为.NET Unicode

在VB中将ANSI转换为.NET Unicode,.net,vb.net,unicode,ansi,.net,Vb.net,Unicode,Ansi,我知道这个问题已经讨论过很多次了,但是我找不到一个我能够成功实现的答案 我正在将一个VB6项目升级到VB.NET。VB6项目使用第三方dll创建软件注册密钥,该密钥可由客户端计算机上的第二个dll解密,以测试软件的有效使用情况。例如,如果我将我的软件提供给您,则软件上会有我的名字,以及许可证的到期日期。第二个dll位于数百个客户位置,改变为不同的许可证方案充其量也很困难。因此,我需要利用VB.NET项目中的第一个dll来生成可以正确解释的键 dll的开发人员告诉我它输出ANSI字符串,但据我所知

我知道这个问题已经讨论过很多次了,但是我找不到一个我能够成功实现的答案

我正在将一个VB6项目升级到VB.NET。VB6项目使用第三方dll创建软件注册密钥,该密钥可由客户端计算机上的第二个dll解密,以测试软件的有效使用情况。例如,如果我将我的软件提供给您,则软件上会有我的名字,以及许可证的到期日期。第二个dll位于数百个客户位置,改变为不同的许可证方案充其量也很困难。因此,我需要利用VB.NET项目中的第一个dll来生成可以正确解释的键

dll的开发人员告诉我它输出ANSI字符串,但据我所知,在VB.NET中,字符串是Unicode。因此,我需要将以下调用的字符串输出转换为Unicode:

    ' generate the serial number
    If GenRegCode(msRegisteredName & msStationNumber, _
                  miRegOptions, _
                  0, _
                  1, _
                  liDay, _
                  liMonth, _
                  liYear, _
                  msSerialNumber) Then

        ' successful, convert ANSI msSerialNumber to Unicode, clean up, and set good return
        msSerialNumber = Left(pfANSIToUnicode(msSerialNumber), 24)
        ' etc.
最后一个参数msSerialNumber由ref传递

我还猜测,我必须将第一个参数从Unicode传递到ANSI,所以我想我需要两个函数——UnicodeToANSI和ANSIToUnicode。在过去的一天里,我一直在用谷歌搜索这个问题,但如果我看到了答案,它就不会被接受。有人能告诉我解决方案的方向吗


提前谢谢

在Encoding.ASCII和Encoding.Unicode中有它们:GetString和GetBytes。这个接口实际上是如何实现的还不清楚。这通常是通过pinvoke完成的,由于DllImportAttribute.CharSet属性,它已经知道如何转换ANSI字符串。你需要具体一点。谢谢你们两位的建议。我找到了一个指向Microsoft工具P/Invoke Interop Assistant的链接,我对该工具抱有希望,但它无法从dll中工作—它需要一个程序集清单。所以我回到了dll的作者那里,他提出要编写一个与VB.NET兼容的中间dll。我希望这一切会容易一点…但再次感谢。