En el foro de c/c++ hay un codigo mio donde muestra como hacer q otro proceso lanze el programa q se le pase como parametro, asi heradando sus privilegios.
No sirve para procesos de privilegios mas altos, ya q no puede abrir el proceso para crear el trhead.
Si yo tengo un programa ejecutandose como "usuario" por defecto cualquiera programa que cargue el primer programa también lo hará como "usuario"...en "unsuario" incluyo a SYSTEM...y yo puedo hacer un programa sencillo en VB que haga lo mismo que tu en C...con cojer los parametros y ejecutarlos llega
Otra posibilidad, que a lo mejor te puede valer y es más simple, es lanzar la aplicación en un script de inicio del equipo; se abre el editor de políticas del sistema (gpedit.msc) y se especifica en "Configuración de equipo\Configuración de Windows\Archivos de comandos (inicio/apagado)". De esta forma se ejecutará, si bien no será un servicio.
Esto es a lo que me refería yo con el método Scripting...se como hacerlo directamente desde el registro...el método lo tengo puesto en el manual que tengo en Tutoriales y Documentacion si a alguien le interesa...
Sobre lo de los servicios eso todo que me pusiste sabía la mayoría, yo a ver yo se crear, modificar, intervenir y eliminar servicios (tanto en el registro como de otras maneras con APIs y asi) e incluso ejecutar el mio propio...lo malo es que para que una aplicación corra como un servicio tiene que dar algun tipo de respuesta en un tiempo determinado...si no lo hace al poco se cierra...sino prueva a crear un servicio por ejemplo poniendo el notepad.exe o asi...ya verás lo que pasa...
Lo malo es que yo no sé dar esa "respuesta" para que el servicio se mantenga...aún asi durante esos segundos puedo cojer y ejecutarme otra vez a mi mismo...pero la verdad prefiero el metodo facil de las tareas programadas....pero si sabeis como dar esa "respuesta" desde VB os lo agradecería mucho...
Weno gracias y saludos