.net - Hvordan starter jeg min winforms app via telnet?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Windows-formular ansøgning på en klient maskine. Jeg forsøger at logge ind via telnet, lukke det ned, opdatere nogle filer og genstarte det.


Brug af cmd på klientmaskinen og indtastning i MyApp.exe fungerer godt for at starte det. Men hvis jeg gør dette i telnet-vinduet, sker der noget underligt: ​​Ansøgningen starter så vidt den er nu på proceslisten, men ingen af ​​dens former er åben eller loggnet loggning er udført.


Hvad sker der, og hvordan løser jeg dette?


  Dette synes at være tilfældet med alle formularbaserede Windows apps. Prøv det selv: telnet localhost => notesblok. Det dukker op i han brugergrænseflade, men ikke ui!


Har jeg også RAdmin installeret på alle disse maskiner? Fra hvad jeg har set, er der ikke-eksisterende automatiseringsfaciliteter, men måske er der noget der kan hjælpe mig? [7]

Bedste reference


Rediger: I mit oprindelige svar misforstod jeg dit spørgsmål, jeg troede, du sagde, at du genstartede maskinen.


Når det er sagt, vil jeg sandsynligvis forsøge at tage en anden tilgang. Kan du indstille en form for automatisk opdateringstjeneste i MyApp.exe. En nem måde ville være at oprette en webservice, som MyApp.exe kan afstemme for at se, hvornår ny versioner er tilgængelige. Derefter skal du opdatere et opdateringsprogram til at udføre opdateringsarbejdet.

Andre referencer 1


I stedet for at bruge telnet, kan du prøve at bruge VNCRobot. Jeg tror, ​​at VNCRobot kører som bruger og skal dele det samme skrivebord. [8]


Ansvarsfraskrivelse: Jeg har aldrig brugt VNCRobot, jeg troede lige, at det ville være værd at nævne.

Andre referencer 2


Jeg tror, ​​hvad der foregår, er at din app starter op på et privat skrivebord, og så afslutter så snart du lukker din telnet-session. Jeg ved ikke hvordan man får det til at starte på 'nuværende/aktive' skrivebordet vindue, men for at holde det kørende, når du logger ud af telnet, prøv at køre med kommandoen start.

Andre referencer 3


På Windows XP fandt jeg en vej rundt om denne begrænsning ved at bruge Windows-task scheduler. For Windows 7 er telnet ikke installeret som standard.


Jeg var nødt til at ændre netværksadgangen: Deling og sikkerhedsmodel for lokale konti til 'Classic - lokale brugere autentificere sig selv' ved at slå sammen følgende registreringsindstillinger:


Windows Registry Editor Version 5.00
[[HKEY\_LOCAL\_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa]]
'Forceguest'=dword: 00000000


Jeg lagde det i en fil på en ekstern FTP-server og brugte FTP-kommandoen til at få det.


Flet det med regedit/s file.reg


Så lavede jeg en opgave, der løb en gang:
SchTasks/Create/SC ONCE/RU 'bruger'/RP pass/TN 'StartApp'/TR '\' C: \ Windows \ NotePad.exe \ ''/ST 00:00:00


Manuelt startede tidsplanen:
Schtasks/run/tn 'StartApp'


Slettet skemaet:
schtasks/delete/F/tn 'StartAPP'


Og det fungerede. Skør rigtigt! Hvilken smerte!

Andre referencer 4


Hvis du kan køre PowerShell på disse maskiner, kan du bruge den til at finde løbeprocessen og dræbe den. det..


Get-Process


..Cmdlet vil vise dig de løbende processer, du kan skrive logikken til foreach gennem denne liste og matche din ansøgning med regex direkte i powershell, jeg kender ikke Ruby, men teoretisk kan du bruge den til at gøre det samme med at påkalde powershell kommandoer med:


powershell.exe -command Get-Process


At dræbe en proces er:


Stop-Process <processId>
Stop-Process -processname <processName>


Ikke helt sikker på, hvordan man starter GUI-processen via telnet, jeg har ikke telnetopsætning på mit udstyr.


måske kan du gøre noget der ligner dette: http://www.peterprovost.org/blog/post/Powershell-Sudo-(sort-of)-for-Vista-UAC.aspx[9]


At sætte verben til 'runas' som i eksemplet på den adresse vil påberåbe UAC, idet jeg ikke kunne dræbe den nye proces, men jeg skal dræbe den, hvis jeg sætter:


$psi.Verb = "open"


Derudover kan du også indstille disse attributter:


Verb                    : open
Arguments               :
CreateNoWindow          : False
EnvironmentVariables    : {processor\_revision, processor\_level, logonserver, systemroot...}
RedirectStandardInput   : False
RedirectStandardOutput  : False
RedirectStandardError   : False
StandardErrorEncoding   :
StandardOutputEncoding  :
UseShellExecute         : True
Verbs                   : {open, runas, runasuser}
UserName                :
Password                :
Domain                  :
LoadUserProfile         : False
FileName                : notepad.exe
WorkingDirectory        :
ErrorDialog             : False
ErrorDialogParentHandle : 0
WindowStyle             : Normal