原码!
HKEY hKey;
    HKEY hkResult;
    LONG result;
    hKey=HKEY_CLASSES_ROOT;
    char *SubKey = ".vbt";
    result = RegOpenKeyEx(hKey,".vbt",0,KEY_ALL_ACCESS,&hkResult);
    if(result!=ERROR_SUCCESS)
{
  result = RegCreateKey(hKey,".vbt",&hkResult);
  if(result != ERROR_SUCCESS)
  {
//MessageBox("程序初始化失败2");
  *succeed=4;
  }
    //初始化注册表
  else
  {
               char bbt[256];
   
               strcpy(bbt,string);
               RegSetValueEx(hkResult,"content",0,REG_SZ,(BYTE*)bbt,256);
               RegCloseKey(hkResult);
    *succeed=1;
       }
}
     else
 {
          char bbt[256];
          DWORD Type = REG_SZ,Size = 256;
  strcpy(bbt,string);
          RegSetValueEx(hkResult,"content",0,REG_SZ,(BYTE*)bbt,256);
          RegCloseKey(hkResult);
   *succeed=1;
 }

解决方案 »

  1.   

    是不是asp的调用者权限问题,不允许你写注册表
      

  2.   

    ASP是在服务器上运行的,没有访问服务器注册表的权限
      

  3.   

    要让脚本语言调用你的COM,你的COM接口必须是DUAL的
    而且必须从IDispatch中继承
      

  4.   

    感谢您使用微软产品!
    从你的描述看好像是安全权限问题。首先你应搞清运行的时候系统使用什么账户来执行以上访问注册表的代码。1.如果是inproc COM(包括MTS/COM+ library package/application),那么运行的时候检查你的ASP的安全配置情况。
      1)如果ASP application的isolation level为low,那么默认下访问注册表的时候使用IUSER_machine账户
      2)如果ASP application的isolation level为medium,pooled or high,那么访问注册表的时候使用IWAM_machine账户2.如果为DCOM,MTS server package/COM+ server application,那么检查对应的配置中的identity 选项。搞清账户后,使用regedt32.exe对相应的registry keys赋予该账户合适的权限。- 微软全球技术中心 VC技术支持 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。 
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。