Ho scritto un server ssh in C# e ho pensato che sarebbe stato carino collegare Shell come shell. Ho provato 2 metodi per farlo funzionare correttamente, ma entrambi sono tutt'altro che perfetti. Ecco cosa ho provato:È possibile simulare l'API di Windows Console?
- Avviare powershell.exe e reindirizzare è std (in/out). Questo non funziona poiché powershell.exe rileva che viene reindirizzato, modifica il comportamento di . Inoltre, si aspetta dati di input sullo stdid, non sui comandi . Quindi usa la console api per leggere i comandi.
- Powerhell host in un'applicazione "wrapper". Questo ha il vantaggio di di essere in grado di fornire un'implementazione "console" a PowerShell (tramite PSHostRawUserInterface). Funziona meglio, ma puoi ancora invocare comandi (per lo più applicazioni di console reali) come "... | more", che si aspetta che sia in grado di utilizzare l'API della console e successivamente provare a leggere dalla console del wrapper processi.
Quindi quello che mi piacerebbe fare è avere una serie di funzioni che sostituiscono le normali funzioni di input/output della console utilizzate dalle applicazioni della console, così posso gestirle. Ma sembra piuttosto drastico al punto di essere una cattiva idea di design (imo).
In questo momento mi viene l'idea di manipolare la console inviando le chiavi rilevanti con funzioni native/Pinvoke come WriteConsoleInput. Capisco che potrebbe essere possibile falsificare la console in questo modo. Ma non vedo come avrei quindi "letto" cosa succede sulla console.
Anche tenere a mente, è un servizio, quindi preferibilmente non dovrebbe generare una finestra della console effettiva, anche se forse in Windows sessione 0 che non si presenterà e non importa.
Bene per uno vorrei accedere al mio ssh dal mio dispositivo mobile Android. Non ho visto un vero client PowerShell per questo. C'è una parte definita "solo buon divertimento" in questo progetto. Per quanto riguarda Cygwin ... beh ho problemi (forse irrazionali) con esso. –
Provi questo [PowerShellInside] (http: //www.powershellinside.com/powershell/ssh/download.aspx). Esiste una versione gratuita di una connessione. – JPBlanc
Humm, una ricerca interessante, lo controllerò. Mi chiedo come abbiano risolto il problema. –