95 lines
2 KiB
C++
95 lines
2 KiB
C++
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name :
|
|
|
|
guid.cpp
|
|
|
|
Abstract:
|
|
|
|
Initialization as required by initguid
|
|
|
|
Author:
|
|
|
|
Ronald Meijer (ronaldm)
|
|
|
|
Project:
|
|
|
|
Internet Services Manager
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
//
|
|
// Include Files
|
|
//
|
|
#include "stdafx.h"
|
|
|
|
#include <objbase.h>
|
|
#include <initguid.h>
|
|
|
|
#define INITGUID
|
|
#include "iwamreg.h"
|
|
#include "guid.h"
|
|
|
|
int AppDeleteRecoverable_Wrap(LPCTSTR lpszPath)
|
|
{
|
|
int iReturn = FALSE;
|
|
int iCoInitCalled = FALSE;
|
|
|
|
TCHAR lpszKeyPath[_MAX_PATH];
|
|
WCHAR wchKeyPath[_MAX_PATH];
|
|
HRESULT hr = NOERROR;
|
|
IWamAdmin* pIWamAdmin = NULL;
|
|
|
|
if (lpszPath[0] == _T('/'))
|
|
{
|
|
_tcscpy(lpszKeyPath, lpszPath);
|
|
}
|
|
else
|
|
{
|
|
lpszKeyPath[0] = _T('/');
|
|
_tcscpy(_tcsinc(lpszKeyPath), lpszPath);
|
|
}
|
|
|
|
#if defined(UNICODE) || defined(_UNICODE)
|
|
_tcscpy(wchKeyPath, lpszKeyPath);
|
|
#else
|
|
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)lpszKeyPath, -1, (LPWSTR)wchKeyPath, _MAX_PATH);
|
|
#endif
|
|
|
|
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
|
if (FAILED(hr))
|
|
{
|
|
iisDebugOut((_T("AppDeleteRecoverable_Wrap: CoInitializeEx() failed, hr=%x\n"), hr));
|
|
goto AppDeleteRecoverable_Wrap_Exit;
|
|
}
|
|
// Set the flag to say that we need to call co-uninit
|
|
iCoInitCalled = TRUE;
|
|
|
|
hr = CoCreateInstance(CLSID_WamAdmin,NULL,CLSCTX_SERVER,IID_IWamAdmin,(void **)&pIWamAdmin);
|
|
if (FAILED(hr))
|
|
{
|
|
iisDebugOut((_T("AppDeleteRecoverable_Wrap:CoCreateInstance() failed. err=%x.\n"), hr));
|
|
goto AppDeleteRecoverable_Wrap_Exit;
|
|
}
|
|
|
|
hr = pIWamAdmin->AppDeleteRecoverable(wchKeyPath, TRUE);
|
|
pIWamAdmin->Release();
|
|
if (FAILED(hr))
|
|
{
|
|
iisDebugOut((_T("AppDeleteRecoverable_Wrap() on path %s failed, err=%x.\n"), lpszKeyPath, hr));
|
|
goto AppDeleteRecoverable_Wrap_Exit;
|
|
}
|
|
|
|
// We got this far, everything must be okay.
|
|
iReturn = TRUE;
|
|
|
|
AppDeleteRecoverable_Wrap_Exit:
|
|
if (iCoInitCalled == TRUE) {CoUninitialize();}
|
|
return iReturn;
|
|
}
|
|
|