mirror of https://github.com/tongzx/nt5src
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
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);
|
|
|
|
}
|