Administración de usuarios de Windows 2000 - Ejemplo práctico de Active Directory

  

En aplicaciones prácticas, si queremos hacer un software de control de servidor a terminal, a menudo necesitamos administrar usuarios. Por supuesto, NT y W2K proporcionan un modo de administración de usuarios perfecto, pero a veces no queremos buscarlo desde las herramientas de administración. Iniciar la administración de usuarios es muy complicado de administrar. A menudo esperamos poder administrar usuarios de NT, W2K desde nuestro software, lo cual es muy necesario para algunos usuarios que no tienen mucha experiencia en el sistema operativo. Recientemente, alguien me pidió que escribiera un software de administración de terminal para él. Al principio no sentí que fuera necesario, pero después de que dijo que era necesario, usó PB. Dijo que parece difícil hacerlo. Así que tuve que escribirle una DLL, agregar usuarios, eliminar usuarios, cambiar contraseñas, agregar usuarios a grupos, eliminar grupos, obtener listas de usuarios, etc. Debido a que la longitud es demasiado larga, no es conveniente que los lectores la lean, por lo que Algunas funciones han sido omitidas, por favor contácteme si es necesario. [email protected]

Las siguientes funciones utilizan principalmente NT, W2K Active Directory servicios algunas interfaces de componentes, como el contenedor IADsContainer, IADs, IADsUser interface.

1. Eliminar un usuario (de esta máquina)

BOOL __stdcall DeleteUser (char * username)
{
HRESULT hr;
IADsContainer * pContainer = NULL;
_bstr_t bstr;
DWORD ll_len = 255;
char lbBuffer [255];
:: GetComputerName (lbBuffer, &ll_len);
bstr = "WinNT: //" + _bstr_t (lbBuffer) + "," + _ bstr_t ("computer");
//Inicializar el subproceso del apartamento
hr = CoInitialize (NULL);
hr = ADsGetObject (bstr, IID_IADsContainer, (void **) &pContainer);
pContainer- > Delete (L "usuario", _ bstr_t (nombre de usuario));
pContainer- > Release ();

CoUninitialize ();
return FALSE;
}

2, agregar un usuario

BOOL __stdcall AddUser (char * username, char * fullname, char * description)
{
HRESULT hr;
> IADsContainer * pContainer = NULL;
IAD * almohadillas = NULL;
IDispatch * pDisp = NULL;
_bstr_t bstr;
DWORD ll_len = 255;
carbón lbBuffer [255]; :: GetComputerName (lbBuffer, &ll_len);

bstr = "WinNT: //" + _bstr_t (lbBuffer) + "" + _bstr_t ( "PC"); //
Inicializar hilo de apartamento
hr = CoInitialize (NULL);
hr = ADsGetObject (bstr, IID_IADsContainer, (void **) &pContainer);
hr = pContainer- > Crear (L "usuario", _bstr_t (nombre de usuario), &pDisp);
pContainer- > Release ();
si (SUCCEEDED (h!)) {h retorno;}
h = pDisp- > QueryInterface (IID_IADs, (void **) &pADs);
pDisp- > Release ();
if (! SUCCEEDED (hr)) {return 0;}
VARIANT var; br> VariantInit (&var);
var.vt = VT_BSTR;
var.bstrVal = _bstr_t (nombre completo);
pADs- > Ponga (L "Nombre completo", var);
VariantClear (&var);

var.vt = VT_BSTR;
var.bstrVal = _bstr_t (descripción);
pADs- > put (L "Descripción" , var);
VariantClear (&var);

hr = pADs- > SetInfo ();
hr = pADs- > Release ();

CoUninitialize ();
return FALSE;
}

3. Establecer contraseña de usuario

BOOL __stdcall SetUserPwd (char * username, char * pwd)
{
HRESULT hr;
IADsUser * pUser;
_bstr_t bstr;
DWORD ll_len = 255;
char lbBuffer [255];
:: GetComputerName (lbBuffer, &ll_len);

bstr = "WinNT: //" + _bstr_t (lbBuffer) + "/" + _bstr_t (nombre de usuario) + "el usuario";
file: //inicializar apartamento hilo
hr = CoInitialize (NULL);
hr = ADsGetObject (bstr, IID_IADsUser, (void **) &pUser);
if (SUCCEEDED (hr))
{
hr = pUser- > SetPassword ( _bstr_t (PWD));
si (SUCCEEDED (h)) {

CoUninitialize ();
return true;
}}

CoUninitialize ();

devolverá FALSE;
}

Copyright © Conocimiento de Windows All Rights Reserved