Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

138 lines
3.0 KiB

//----------------------------------------------------------------------------
//
// Microsoft Active Directory 1.0 Sample Code
//
// Copyright (C) Microsoft Corporation, 1996
//
// File: main.cxx
//
// Contents: Main for adscmd
//
//
//----------------------------------------------------------------------------
#include "main.hxx"
GUID sapguid;
#define ssgData1 0xa5569b20
#define ssgData2 0xabe5
#define ssgData3 0x11ce
#define ssgData41 0x9c
#define ssgData42 0xa4
#define ssgData43 0x00
#define ssgData44 0x00
#define ssgData45 0x4c
#define ssgData46 0x75
#define ssgData47 0x27
#define ssgData48 0x31
//-------------------------------------------------------------------------
//
// main
//
//-------------------------------------------------------------------------
void __cdecl
main()
{
IADsContainer *pContainer = NULL;
IADs *pObj = NULL;
IDispatch *pDispatch = NULL;
IADsService *pService = NULL;
BSTR bstrName;
HRESULT hr;
LPWSTR lpwstrPath = NULL;
LPWSTR lpwstrService, lpwstrRelName;
hr = CoInitialize(NULL);
if (FAILED(hr)) {
printf("CoInitialize failed\n");
exit(1);
}
char buffer[500];
scanf("%s", buffer);
// lpwstrPath = AllocateUnicodeString("WinNT://SEANW1");
printf("%s", buffer);
lpwstrPath = AllocateUnicodeString(buffer);
lpwstrService = AllocateUnicodeString("user");
lpwstrRelName = AllocateUnicodeString("IISfoo");
BAIL_ON_NULL(lpwstrPath);
BAIL_ON_NULL(lpwstrService);
BAIL_ON_NULL(lpwstrRelName);
hr = ADsGetObject(
lpwstrPath,
IID_IADsContainer,
(void**) &pContainer);
BAIL_ON_FAILURE(hr);
// Create a services object
hr = pContainer->Create(lpwstrService, lpwstrRelName, &pDispatch);
if (FAILED(hr)) {
printf("Create failed\n");
goto error;
}
IADsUser *pUser;
pDispatch->QueryInterface(IID_IADs, (void**)&pObj);
pDispatch->QueryInterface(IID_IADsUser, (void**)&pUser);
// pDispatch->QueryInterface(IID_IADsService, (void**)&pService);
// Get services obj
// pObj->QueryInterface(IID_IADsService, (void**) &pService);
/*
// fill in params
VARIANT var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = SysAllocString(L"0xa5569b20abe511ce9ca400004c752731");
BSTR name;
name = SysAllocString(L"serviceClassID");
hr = pObj->Put(name, var);
if (FAILED(hr)) {
printf("Put failed");
goto error;
}
*/
hr = pUser->SetInfo();
if (FAILED(hr)) {
printf("SetInfo failed");
goto error;
}
pContainer->Release();
pObj->Release();
pService->Release();
printf("No Error\n");
FreeUnicodeString(lpwstrPath);
FreeUnicodeString(lpwstrRelName);
FreeUnicodeString(lpwstrService);
return;
error:
printf("Error:\t%d\n", hr);
FreeUnicodeString(lpwstrPath);
FreeUnicodeString(lpwstrRelName);
FreeUnicodeString(lpwstrService);
}