windows-nt/Source/XPSP1/NT/ds/adsi/drt/adscmd/defcont.cxx

117 lines
2.3 KiB
C++
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
//----------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996
//
// File: defcont.cxx
//
// Contents: Active Directory Default Container
//
// History: 05-21-96 RamV created
// 08-02-96 t-danal add to oledscmd
//
//----------------------------------------------------------------------------
#include "main.hxx"
#include "macro.hxx"
#include "sconv.hxx"
//
// Local functions
//
HRESULT
SetDefaultContainer(LPWSTR pszValue);
HRESULT
PrintDefaultContainer(VOID);
//
// Misc worker functions
//
HRESULT
SetDefaultContainer(
LPWSTR pszValue
)
{
HRESULT hr = E_FAIL;
IADsNamespaces *pNamespaces = NULL;
BSTR bstrValue = NULL;
if (pszValue) {
BAIL_ON_NULL(bstrValue = SysAllocString(pszValue));
}
else {
bstrValue = NULL;
}
hr = ADsGetObject(L"@ADS!",
IID_IADsNamespaces,
(void **)&pNamespaces);
BAIL_ON_FAILURE(hr);
hr = pNamespaces->put_DefaultContainer(bstrValue);
BAIL_ON_FAILURE(hr);
hr = pNamespaces->SetInfo();
error:
FREE_INTERFACE(pNamespaces);
FREE_BSTR(bstrValue);
return hr;
}
HRESULT
PrintDefaultContainer(
)
{
HRESULT hr;
IADsNamespaces *pNamespaces = NULL;
BSTR bstrValue = NULL;
hr = ADsGetObject(L"@ADS!",
IID_IADsNamespaces,
(void **)&pNamespaces);
BAIL_ON_FAILURE(hr);
hr = pNamespaces->get_DefaultContainer(&bstrValue);
BAIL_ON_FAILURE(hr);
printf("Default Container = %ws\n", bstrValue);
error:
FREE_INTERFACE(pNamespaces);
FREE_BSTR(bstrValue);
return hr;
}
//
// Exec function
//
int
ExecDefaultContainer(char *szProgName, char *szAction, int argc, char * argv[])
{
HRESULT hr;
LPWSTR pszValue = NULL ;
if (argc < 0 || argc > 1) {
PrintUsage(szProgName, szAction, "[default container]");
return(1);
}
if (argc == 1) {
ALLOC_UNICODE_WITH_BAIL_ON_NULL(pszValue, argv[0]);
hr = SetDefaultContainer(pszValue);
} else {
hr = PrintDefaultContainer();
}
error:
FreeUnicodeString(pszValue);
if (FAILED(hr))
return(1);
return(0);
}