2009-11-20 15 views
5

¿Es posible ingresar a Windows (a través de un sshd de cygwin) e iniciar un programa en un escritorio de usuario de Windows conectado?¿Es posible ingresar a Windows (a través de un sshd de cygwin) e iniciar un programa en un escritorio de usuario de Windows conectado?

Dicho de otra manera, digamos que un usuario ABC ha iniciado sesión en Windows y un usuario remoto inicia sesión con el inicio de sesión/contraseña de ABC a través de ssh, ¿puede el control remoto ABC abrir una aplicación en el escritorio del usuario ABC local?

Pregunto esto en Stackoverflow y no en Serverfault porque la motivación para hacerlo es de naturaleza programática. La llamada remota vendrá desde una caja Linux así que mientras sea posible (?) Hacer esto usando WMI o algún otro enfoque, ssh parece ser el más simple.

Feliz de escuchar alternativas más simples/mejores sin embargo.

Gracias!

Respuesta

1

Si su cygwin sshd se ejecuta con una cuenta con privilegios, puede obtener un control sobre el escritorio actual y colocar ventanas sobre él. Vea el parámetro de escritorio de STARTUPINFO para CreateProcess.

+0

Ah, gracias, este parece ser un buen punto de partida. – Atlas1j

1

Mi propia solución. Probado en Windows XP (pero creo que debería ejecutarse en cualquier entorno de Windows con un pequeño esfuerzo).

Debe usar el comando psexec y quser.

En primer lugar, poner psexec y quser en un directorio incluido en la variable de entorno PATH del cygwin. Solo copie estos archivos en el directorio bin en cygwin.

se puede encontrar el quser.exe en su % system32% \ dllcache dir. Pero por alguna razón no puedo acceder a él (o acceder al directorio mencionado) a través de los comandos de cygwin (es decir, ls, cp, etc.), así que hice una copia usando el comando de copia de Microsoft en la carpeta cygwin \ bin.

Notas: Creo que es útil tener las suite psutils en la carpeta bin de cygwin. La primera vez que ejecute cualquiera de estas utilidades tendrá que aceptar un acuerdo de licencia de advertencia de Microsoft, por lo que ejecute psexec desde el explorador de Windows la primera vez.

A continuación, crear estos alias en el archivo .bash_profile:

alias winrun='psexec \\\\YOU_USERNAME_HERE -d -i `quser | grep YOU_USERNAME_HERE | grep console | awk "{print \\\$3}"`' 
alias explorethis='winrun explorer $(cygpath -w `pwd`)' 

Recuerde que usted tendrá que traducir el directorio actual utilizando cygpath si es necesario pasarlo como argumento de un comando ("explorethis" es una ejemplo de eso).

Cuestiones relacionadas