如何把值显示在屏幕上?REG_MULTI_SZMultiple text strings formatted as an array of null-terminated strings, and terminated by two null characters. Values that contain lists or multiple values in a form that people can read usually take this data type. The values in a REG_MULTI_SZ entry can be separated by spaces, commas or other s.

解决方案 »

  1.   

    SDK的
    谁知道帮帮忙吧!
      

  2.   

    好像不难吧!读注册表没有遇到这些问题啊?
    在 atlbase.h
    中提供了一个CRegKey 的类,很好用的。
      

  3.   

    谢谢。
    你指的是不是MFC中的类?我不太懂MFC。
    我指的是用C进行SDK编程。
    REG_MULTI_SZ值往往由多个以"\0"结束的字符串组成,单用printf只能显示第一个字符串。有什么办法能把所有的字符串都显示才出来呢?
      

  4.   

    哦!你应该说的是2000以上系统吧,用了什么unicode的,每个字符后就会有一个空,你可以先循环找到连续两个空,就说明字符串完了,得到长度在循环打出来,或是循环时每次加2吗,不知道行不行,不过以前搞过一个类似的是可以
      

  5.   

    REG_MULTI_SZ类型的值的确是由两个“\0”结束的。操作注册表的几个API的最后一个参数就返回了值的长度,循环输出也只能重复输出第一个字符串,次数和字节数相同。或者是我菜了:)谁能贴个简单的例子吗?
      

  6.   

    这是packet中,获得网卡的一段,不知道对你是不是有用
    主要是看它的算法吧
    if(PacketGetAdapterNames(AdapterName,&AdapterLength)==FALSE){
    printf("Unable to retrieve the list of the adapters!\n");
    return -1;
    }
    temp=AdapterName;
    temp1=AdapterName;
    while ((*temp!='\0')||(*(temp-1)!='\0'))
    {
    if (*temp=='\0') 
    {
    memcpy(AdapterList[i],temp1,(temp-temp1)*2);
    temp1=temp+1;
    i++;
    }

    temp++;
    }
      
    AdapterNum=i;
    for (i=0;i<AdapterNum;i++)
    wprintf(L"\n%d- %s\n",i+1,AdapterList[i]);
    printf("\n");