PPstream和PPLive是不是做了BHO ?解决方案

PPstream和PPLive是不是做了BHO ?
在网页浏览器中一输入
ppstream://2itagakqfm6ycokoapmt3ge5rab5tw4ze6dahwotmjxeua6zzjr6syqd3hoqdtuzapm5uo5peeb5turgamaqhwoseybqga6z.pps/PTW4OK5SWTYXCOL2VTS44SWHVMO67ZXN

PPStream就会自动运行起来,并开始播放该节目.我觉得是做了个BHO判断网页浏览器中输入的地址。
可是通过360安全卫士来扫描各种插件,却扫描不到该BHO

------解决方案--------------------
应该是加了个Namespace Provider。
------解决方案--------------------
应该是加了个Namespace Provider。

这个是个什么东西?怎么实现的呢?
------解决方案--------------------
这个不能告诉你,你该学会了
------解决方案--------------------
Q: 如何自己定义一个abc://的协议

A:
HKEY hKey;
CString value;
ret=RegOpenKeyEx(HKEY_CLASSES_ROOT, "goyoo ",0,KEY_READ|KEY_WRITE,&hKey);
if(ret!=ERROR_SUCCESS)
{
RegCreateKey(HKEY_CLASSES_ROOT, "goyoo ",&hKey);

value= "URL:goyoo Protocol ";
ret=RegSetValueEx(hKey, // subkey handle
NULL, // value name
0, // must be zero
REG_SZ, // value type
CString_To_LPBYTE(value), // pointer to value data
strlen(value)+1);

ret=RegSetValueEx(hKey, // subkey handle
"Default DownLoadPath ", // value name
0, // must be zero
REG_SZ, // value type
CString_To_LPBYTE(CGInetAndFile::GetCurrentPath()), // pointer to value data
strlen(CGInetAndFile::GetCurrentPath())+1);


ret=RegSetValueEx(hKey, // subkey handle
"URL Protocol ", // value name
0, // must be zero
REG_SZ, // value type
NULL, // pointer to value data
NULL);
ret=RegCreateKey(HKEY_CLASSES_ROOT, "goyoo\\shell ",&hKey);
ret=RegSetValueEx(hKey, // subkey handle
NULL, // value name
0, // must be zero
REG_SZ, // value type
NULL, // pointer to value data
NULL);
ret=RegCreateKey(HKEY_CLASSES_ROOT, "goyoo\\shell\\open ",&hKey);
ret=RegSetValueEx(hKey, // subkey handle
NULL, // value name
0, // must be zero
REG_SZ, // value type
NULL, // pointer to value data
NULL);
ret=RegCreateKey(HKEY_CLASSES_ROOT, "goyoo\\shell\\open\\command ",&hKey);
value=(CString)szPath+ " \ "%1\ " ";
ret=RegSetValueEx(hKey, // subkey handle
NULL, // value name
0, // must be zero
REG_SZ, // value type
CString_To_LPBYTE(value), // pointer to value data
strlen(value)+1);
RegCloseKey(hKey);
if(ret!=ERROR_SUCCESS)
{
return FALSE;
}else
{
return TRUE;
}
}else
{
return TRUE;
}

LPBYTE CString_To_LPBYTE(CString str)
{
LPBYTE lpb=new BYTE[str.GetLength()+1];
for(int i=0;i <str.GetLength();i++)
lpb[i]=str[i];
lpb[str.GetLength()]=0;
return lpb;
}