Problema con LogonUser() / ImpersonateLoggedOnUser()

Iniciado por APOKLIPTICO, 24 Julio 2012, 16:15 PM

0 Miembros y 1 Visitante están viendo este tema.

APOKLIPTICO

Buenas! Tengo un problema con la función LogonUser
Estoy utilizando estas funciones.

Código (cpp) [Seleccionar]
#include <iostream>
#include <windows.h>
#define LOGON32_LOGON_NEW_CREDENTIALS 9
#define LOGON32_PROVIDER_WINNT50 3
#define REMOTE_USER_S "Administrador"
#define REMOTE_PASS_S "password"
using namespace std;

int main()
{
   HANDLE hToken;
   bool bAnswer = false;
   bAnswer = LogonUser(REMOTE_USER_S, (char*) ".", REMOTE_PASS_S, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &hToken);
   cout << bAnswer << endl;
   HANDLE hToken2;
   bAnswer = DuplicateToken(hToken, SecurityImpersonation, &hToken2);
   cout << bAnswer << endl;
   bAnswer = ImpersonateLoggedOnUser(hToken2);
   cout << bAnswer << endl;
   HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
   if(hSCManager == NULL) cout << "Error! " << GetLastError() << endl;
   return 0;
}


Este código devuelve
1
1
1
Error! 5 (Acceso denegado).

Pasa lo mismo si le pongo la contraseña válida o una inválida.

Como puedo hacer para asegurarme que el usuario haya sido correctamente logueado y cargado, es decir, como puedo hacer para comprobar que las credenciales que se le proveen (Usuario y contraseña, en este caso no hay dominio) son válidas.

Esto lo quiero utilizar para acceder a recursos de red que sólo están disponibles bajo ciertos usuarios.

Un saludo
APOKLIPTICO.

PD: Pasa lo mismo sino utilizo DuplicateToken.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.