控制項安全註冊方法3選

2021-03-31 14:42:44 字數 2847 閱讀 8082

#include

#include

#include

... /

// dllregisterserver - adds entries to the system registry

/* 原來的**(被注釋)

stdapi dllregisterserver(void)

/

// dllunregisterserver - removes entries from the system registry

stdapi dllunregisterserver(void)

*/

//用途: 註冊元件分類

//說明: 元件安全性種類就是通過元件分類的註冊才得以設定元件的安全性

hresult create***ponentcategory(catid catid, wchar* catdescription)

categoryinfo catinfo;

catinfo.catid = catid;

catinfo.lcid = 0x0409 ; // english

//說明: 確保提供的描述不會超長, 僅僅複製前127個字元

int len = wcslen(catdescription);

if (len>127)

len = 127;

wcsncpy(catinfo.szdescription, catdescription, len);

// 確保描述使用"/0"結束

catinfo.szdescription[len] = '/0';

hr = pcr->registercategories(1, &catinfo);

pcr->release();

return hr; }

//用途: 在已經存在的元件分類中進行介面類的註冊

hresult registerclsidincategory(refclsid clsid, catid catid)

if (pcr != null)

pcr->release();

return hr; }

//用途: 反註冊已存在元件分類中的介面類

hresult unregisterclsidincategory(refclsid clsid, catid catid)

if (pcr != null)

pcr->release();

return hr; }

//註冊伺服器

stdapi dllregisterserver(void)

//建立初始化安全元件分類

hr = create***ponentcategory(catid_safeforinitializing,

l"controls safely initializable from persistent data!");

if (failed(hr))

return hr;

//在上面的分組之中註冊介面類

hr = registerclsidincategory(clsid_pssub, catid_safeforinitializing);

if (failed(hr))

return hr;

//建立指令碼程式設計安全元件分類

hr = create***ponentcategory(catid_safeforscripting,

l"controls safely scriptable!");

if (failed(hr))

return hr;

//在上面的分組之中註冊介面類

hr = registerclsidincategory(clsid_pssub, catid_safeforscripting);

if (failed(hr))

return hr;

return noerror; }

//用途: 反註冊伺服器

stdapi dllunregisterserver(void)

//刪除登錄檔入口

hr=unregisterclsidincategory(clsid_pssub, catid_safeforinitializing);

if (failed(hr))

return hr;

hr=unregisterclsidincategory(clsid_pssub, catid_safeforscripting);

if (failed(hr))

return hr;

return noerror; }

或者

class ....

public iobjectsafetyimpl,

...

...

begin_***_map(cagent)

...

***_inte***ce_entry(iobjectsafety)

...

end_***_map() 或者

//2001.12.07 - 安全註冊支援

const catid catid_safeforscripting     = };

const catid catid_safeforinitializing  =

};

....

//2001.12.07 - 安全註冊支援

begin_category_map(csubagent)

implemented_category(catid_safeforinitializing)

implemented_category(catid_safeforscripting)

end_category_map()

自己挑吧.

乙個ActiveX控制項安全註冊的例子

include include include dllregisterserver adds entries to the system registry 原來的 被注釋 stdapi dllregisterserver void dllunregisterserver removes entrie...

C 跨執行緒操作控制項的執行緒安全方法

c 跨執行緒操作控制項的執行緒安全方法 在c 中,經常用到這樣乙個場景,windows form程式啟動乙個工作者執行緒執行一部分工作,這樣做是為了避免速度慢的工作如果直接呼叫會使得主form停止響應一段時間。既然啟動了執行緒,就避免不了執行緒之間資料傳遞的事情,相信你有很多種辦法能解決,總之注意同...

C 跨執行緒操作控制項的執行緒安全方法

c 跨執行緒操作控制項的執行緒安全方法 在c 中,經常用到這樣乙個場景,windows form程式啟動乙個工作者執行緒執行一部分工作,這樣做是為了避免速度慢的工作如果直接呼叫會使得主form停止響應一段時間。既然啟動了執行緒,就避免不了執行緒之間資料傳遞的事情,相信你有很多種辦法能解決,總之注意同...