Ver Mensaje Individual
  #2  
Antiguo 26-02-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Hola yelian.
La forma más sencilla de realizar un "ejecutar como" es usar ShellExecute con un truquito. Utilizar en el parámetro lpOperation la opción no documentada "runas":
Código:
ShellExecute(NULL, "runas", "Notepad", 0, NULL, SW_SHOWNA);
Pero para lo que tu pretendes tenemos dos opciones más potentes, las APIs CreateProcessWithLogonW y CreateProcessAsUser. Personalmente creo que es más fácil de usar la primera:
Código:
   PROCESS_INFORMATION piProcInfo;
   STARTUPINFOW siStartInfo;

   // Set up members of STARTUPINFO structure.
   ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
   siStartInfo.cb = sizeof(STARTUPINFO);

   HRESULT hRes = CreateProcessWithLogonW(
     L"User",   // El usuario
     L".",        // El dominio
     L"Password",  // El password
     LOGON_WITH_PROFILE,
     NULL,
     L"Notepad.exe", // Nombre de la aplicación
     NULL, // flags
     NULL, // entorno
     L"C:\\", // use parent's current directory
     &siStartInfo, // puntero STARTUPINFO
     &piProcInfo   // PROCESS_INFORMATION (valor devuelto)
   );
Espero que esto sea lo que buscas.

Saludos.
Responder Con Cita