📄 warmmcnodeauthnt.h
字号:
/** */#ifndef WAR_MMC_NODE_AUTH_NT_H#define WAR_MMC_NODE_AUTH_NT_H/* SYSTEM INCLUDES *//* PROJECT INCLUDES */#ifndef WAR_MMC_BASE_NODE_H# include "WarMmcBaseNode.h"#endif#ifndef WAR_PROP_PAGE_NT_AUTH_H# include "PropPageNtAuth.h"#endif#ifndef WAR_MMC_NODE_NT_USER_H# include "WarMmcNodeNtUser.h"#endif/* LOCAL INCLUDES *//* FORWARD REFERENCES */#ifdef __cplusplusextern "C" {#endif/****************** BEGIN OLD STYLE C spesific ********//****************** END OLD STYLE C spesific **********/#ifdef __cplusplus }#endif/****************** BEGIN C++ spesific ****************/#ifdef __cplusplusclass WarMmcNodeAuthNt : public WarMmcBaseNode<WarMmcNodeAuthNt> {public: // LIFECYCLE /** * Default constructor. */ WarMmcNodeAuthNt(const war_registrypath_t& regNode) { mRegKey.Open(HKEY_LOCAL_MACHINE, regNode, KEY_ALL_ACCESS); } /** * Destructor. */ ~WarMmcNodeAuthNt(void) {} // OPERATORS // OPERATIONS HRESULT OnSelect(IConsole *spConsole, IComponent* pComponent) { IConsoleVerb *pConsoleVerb; HRESULT hr = spConsole->QueryConsoleVerb(&pConsoleVerb); _ASSERT(SUCCEEDED(hr)); hr = pConsoleVerb->SetVerbState(MMC_VERB_RENAME, ENABLED, TRUE); _ASSERT(SUCCEEDED(hr)); hr = pConsoleVerb->SetVerbState(MMC_VERB_PROPERTIES, ENABLED, TRUE); _ASSERT(SUCCEEDED(hr)); pConsoleVerb->Release(); return S_OK; } STDMETHOD(QueryPagesFor)(DATA_OBJECT_TYPES type) { if (type == CCT_SCOPE || type == CCT_RESULT) return S_OK; return S_FALSE; } STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK lpProvider,long handle, IUnknown* pUnk, DATA_OBJECT_TYPES type) { if (type == CCT_SCOPE || type == CCT_RESULT) { // The second parameter to the property page class constructor // should be true for only one page. CPropPageNtAuth* pPage = new CPropPageNtAuth(mRegKey, handle, false, _T("NT Auth")); HRESULT hr = lpProvider->AddPage(pPage->Create()); if(FAILED(hr)) return E_FAIL; return S_OK; } return E_UNEXPECTED; } virtual HRESULT OnRename(IConsole* pConsole, LPOLESTR param) { // Try to rename the registry key... WarCollector<TCHAR> reg_name = param; try { mRegKey.Rename(reg_name.GetValue().c_str()); return Rename(pConsole, param); } catch(WarException) { return S_FALSE; } } virtual HRESULT OnExpand(BOOL bExpand, IConsole *pConsole, HSCOPEITEM parent) { if (bExpand) { CComQIPtr<IConsoleNameSpace, &IID_IConsoleNameSpace> spConsoleNameSpace(pConsole); WarUserAuthWin32Nt my_auth; WarUserAuthWin32Nt::user_set_t user_set; my_auth.Create(mRegKey.GetPath(NULL)); try { my_auth.EnumerateUsers(user_set); } catch(WarException& e) { CString msg; WarCollector<TCHAR> str_msg = e.Explain(); msg.Format(_T("Failed to enumerate users.\n%s"), str_msg.GetValue().c_str()); AfxMessageBox(msg); return E_UNEXPECTED; } for(WarUserAuthWin32Nt::user_set_t::iterator P = user_set.begin() ; P != user_set.end() ; P++) { SCOPEDATAITEM sdi; memset(&sdi, 0, sizeof(sdi)); sdi.mask = SDI_STR | SDI_PARAM | SDI_IMAGE | SDI_OPENIMAGE | SDI_PARENT; sdi.displayname = MMC_CALLBACK; sdi.relativeID = parent; sdi.nImage = WAR_IL_USER; sdi.nOpenImage = WAR_IL_USER; sdi.lParam = (LPARAM)new WarMmcNodeNtUser((*P)); HRESULT hr = spConsoleNameSpace->InsertItem(&sdi); if (FAILED(hr)) return hr; } } return S_OK; } // ACCESS // INQUIRY protected:private: WarWin32Registry mRegKey;};/* INLINE METHODS *//* EXTERNAL REFERENCES */#endif /* __cplusplus *//****************** END C++ spesific ******************/#endif /* WAR_MMC_NODE_AUTH_NT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -