35{
37
41
43 SSOVector sso_ptrs;
44
49
51 break;
52
53 if (!_alive)
54 break;
55
57
60 if (
SUCCEEDED((*sso_ptr)->Exec(&CGID_ShellServiceObject, OLECMDID_NEW, OLECMDEXECOPT_DODEFAULT,
NULL,
NULL)))
61 sso_ptrs.push_back(sso_ptr);
62 }
63 }
64 }
65
67 }
68
69 if (!sso_ptrs.empty()) {
71
72 while(_alive) {
74 break;
75
76 while(_alive) {
78 break;
79
81 break;
82
85 }
86 }
87
88
89 for(SSOVector::iterator it=sso_ptrs.begin(); it!=sso_ptrs.end(); ++it) {
91 (*sso_ptr)->Exec(&CGID_ShellServiceObject, OLECMDID_SAVE, OLECMDEXECOPT_DODEFAULT,
NULL,
NULL);
92 delete sso_ptr;
93 }
94 }
95
96 return 0;
97}
#define RegCloseKey(hKey)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
@ COINIT_APARTMENTTHREADED
@ COINIT_SPEED_OVER_MEMORY
wrapper class for COM interface pointers
HRESULT CreateInstance(REFIID clsid, REFIID riid)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define HKEY_LOCAL_MACHINE
BOOL WINAPI TranslateMessage(_In_ const MSG *)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)