用byte[]作缓冲区,而不用StringBuilder。以下调用全部用Unicode版本:[DllImport("Advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern int RegQueryValueExW(
IntPtr hKey, string valueName, IntPtr reserved,
out int lpType, byte[] data, ref int dataSize);static void Main()
{
IntPtr pHKey = ...;
string keyName = ...; byte[] data = new byte[1024];
int dataSize = data.Length;
int keyType = 0; int error = RegQueryValueExW(pHKey, keyName, IntPtr.Zero, out keyType, data, ref dataSize);
string[] lines = Encoding.Unicode.GetString(data, 0, dataSize).TrimEnd((char)0).Split((char)0);
}
private static extern int RegQueryValueExW(
IntPtr hKey, string valueName, IntPtr reserved,
out int lpType, byte[] data, ref int dataSize);static void Main()
{
IntPtr pHKey = ...;
string keyName = ...; byte[] data = new byte[1024];
int dataSize = data.Length;
int keyType = 0; int error = RegQueryValueExW(pHKey, keyName, IntPtr.Zero, out keyType, data, ref dataSize);
string[] lines = Encoding.Unicode.GetString(data, 0, dataSize).TrimEnd((char)0).Split((char)0);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货