Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   CreateProcessWithLogonW (https://www.clubdelphi.com/foros/showthread.php?t=90647)

neomicho85 02-08-2016 16:48:43

CreateProcessWithLogonW
 
Hola amigos del foro, estoy trabajando en una app que necesita CreateProcessWithLogonW estoy trabajando en MicrosoftVisual C++ pero me esta dando el siguiente problem: error C2065: 'CreateProcessWithLogonW' : undeclared identifier. El codigo que estoy utilizando es basado en Microsoft

Código:

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <sstream>
#include <fstream>
#include <stdlib.h>
#include <windows.h>
#include <userenv.h>
#define _WIN32_WINNT 0x0500
const LOGON_WITH_PROFILE = 0x00000001;


void wmain(int argc, WCHAR *argv[])
{
    DWORD    dwSize;
    HANDLE    hToken;
    LPVOID    lpvEnv;
    PROCESS_INFORMATION pi = {0};
    STARTUPINFO        si = {0};
    WCHAR              szUserProfile[256] = L"";

    si.cb = sizeof(STARTUPINFO);
   
    if (argc != 4)
    {
        wprintf(L"Usage: %s [user@domain] [password] [cmd]", argv[0]);
        wprintf(L"\n\n");
        return;
    }

    //
    // TO DO: change NULL to '.' to use local account database
    //
    if (!LogonUser(argv[1], NULL, argv[2], LOGON32_LOGON_INTERACTIVE,
            LOGON32_PROVIDER_DEFAULT, &hToken))
      return 1;

    if (!CreateEnvironmentBlock(&lpvEnv, hToken, TRUE))
    return 1;

    dwSize = sizeof(szUserProfile)/sizeof(WCHAR);

    if (!GetUserProfileDirectory(hToken, szUserProfile, &dwSize))
        return 1;

    //
    // TO DO: change NULL to '.' to use local account database
    //
    if (!CreateProcessWithLogonW(argv[1], NULL, argv[2],
            LOGON_WITH_PROFILE, NULL, argv[3],
            CREATE_UNICODE_ENVIRONMENT, lpvEnv, szUserProfile,
            &si, &pi))
        return 1;

    if (!DestroyEnvironmentBlock(lpvEnv))
        return 1;

    CloseHandle(hToken);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}


escafandra 02-08-2016 18:12:37

Revisa este hilo.


Saludos.

neomicho85 03-08-2016 15:20:05

Gracias scafandra por tu sugerencia
Primeramente comenterte que el hilo a el .rar (Otro usuario) no est funcionando para asi ver el codigo fuente de dicho ejemplo
Segundo: Mi tema esta relacionado con un error que me da el compilador

error C2065: 'CreateProcessWithLogonW' : undeclared identifier.

Asumo que es un tema de cabeceras al faltarme alguna libreria por llamar o quizas algo relacionado con SDK

Muchas gracias de antemano

j0seant 03-08-2016 21:19:01

Cita:

Empezado por neomicho85 (Mensaje 507354)
Gracias scafandra por tu sugerencia
Primeramente comenterte que el hilo a el .rar (Otro usuario) no est funcionando para asi ver el codigo fuente de dicho ejemplo
Segundo: Mi tema esta relacionado con un error que me da el compilador

error C2065: 'CreateProcessWithLogonW' : undeclared identifier.

Asumo que es un tema de cabeceras al faltarme alguna libreria por llamar o quizas algo relacionado con SDK

Muchas gracias de antemano


"#define _WIN32_WINNT 0x0500" debería de estar antes de "#include <windows.h>", no?

neomicho85 03-08-2016 22:49:36

j0seant gracia spor intervenir en el tema
No, esa no es la posible solucion, ya intente mover las cabeceras de orden, incluso como tu lo sugieres pero sin encontrar aun la solucion.

j0seant 03-08-2016 23:07:30

Cita:

Empezado por neomicho85 (Mensaje 507386)
j0seant gracia spor intervenir en el tema
No, esa no es la posible solucion, ya intente mover las cabeceras de orden, incluso como tu lo sugieres pero sin encontrar aun la solucion.

Pues si no es eso lo único que se me ocurre es que estés usando una versión vieja de Visual C++.

escafandra 04-08-2016 12:30:30

La API CreateProcessWithLogonW esta disponible desde WinXP en Advapi32.dll y su definición en WinBase.h.

En caso de que tu compilador sea tan antiguo que no disponga de las definición en WinBase.h, puedes proceder a una importación dinámica aunque lo deseable es que actualices el SDK.


Saludos.


La franja horaria es GMT +2. Ahora son las 03:01:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi