.net 如何通过telnet启动winforms应用程序?

.net 如何通过telnet启动winforms应用程序?,.net,windows,winforms,telnet,.net,Windows,Winforms,Telnet,我在客户端计算机上有一个windows窗体应用程序。我正在尝试通过telnet登录,关闭它,更新一些文件,然后重新启动它 在客户端计算机上使用cmd并键入MyApp.exe可以很好地启动它。但是,如果我在telnet窗口中执行此操作,则会发生一些奇怪的情况:应用程序在进程列表中启动,但其窗体从未打开,也没有任何log4net日志记录 发生了什么事,我该如何解决 编辑:所有基于表单的windows应用程序似乎都是如此。自己试试看:telnet localhost=>notepad。它会在用户界面上

我在客户端计算机上有一个windows窗体应用程序。我正在尝试通过telnet登录,关闭它,更新一些文件,然后重新启动它

在客户端计算机上使用cmd并键入MyApp.exe可以很好地启动它。但是,如果我在telnet窗口中执行此操作,则会发生一些奇怪的情况:应用程序在进程列表中启动,但其窗体从未打开,也没有任何log4net日志记录

发生了什么事,我该如何解决

编辑:所有基于表单的windows应用程序似乎都是如此。自己试试看:telnet localhost=>notepad。它会在用户界面上弹出,但在用户界面上不会


还有,我在所有这些机器上都安装了吗?从我所看到的情况来看,它没有自动化设备,但也许有什么东西可以帮助我?

编辑:在我最初的回答中,我误解了你的问题,我以为你说你重新启动了机器


尽管如此,我还是可能会尝试采取不同的方法。你能在MyApp.exe中设置某种类型的自动更新服务吗。一个简单的方法是设置一个Web服务,MyApp.exe可以在新版本可用时轮询该服务。然后你需要启动一个更新程序应用程序来完成更新工作。

编辑:在我最初的回答中,我误解了你的问题,我以为你说你重新启动了机器


尽管如此,我还是可能会尝试采取不同的方法。你能在MyApp.exe中设置某种类型的自动更新服务吗。一个简单的方法是设置一个Web服务,MyApp.exe可以在新版本可用时轮询该服务。然后,您需要启动一个更新程序应用程序来完成更新工作。

我认为发生的情况是,您的应用程序正在私人桌面上启动,然后在您关闭telnet会话后立即退出。我不知道如何让它在“当前/活动”桌面窗口上启动,但要在您注销telnet后保持它运行,请尝试使用“
start
”命令运行。

我认为发生的情况是,您的应用程序正在私人桌面上启动,然后在您关闭telnet会话后立即退出。我不知道如何使它在“当前/活动”桌面窗口上启动,但要在您注销telnet后保持它运行,请尝试使用“
start
”命令运行。

您可以尝试使用。我相信VNCRobot以用户身份运行,应该共享同一个桌面


免责声明:我从未使用过VNCRobot,我只是觉得它值得一提。

您可以尝试使用,而不是使用telnet。我相信VNCRobot以用户身份运行,应该共享同一个桌面


免责声明:我从未使用过VNCRobot,我只是认为它值得一提。

如果您可以在这些机器上运行PowerShell,您可以使用它来查找正在运行的进程并杀死它。这个

Get-Process
..Cmdlet将向您显示正在运行的进程,您可以通过此列表将逻辑写入foreach,并在powershell中直接将您的应用程序与regex匹配,我不知道Ruby,但理论上,您可以使用它调用powershell命令来执行相同的操作:

powershell.exe -command Get-Process
要终止进程,请执行以下操作:

Stop-Process <processId>
Stop-Process -processname <processName>
此外,还可以设置这些属性:

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

如果您可以在这些机器上运行PowerShell,则可以使用它查找正在运行的进程并将其终止。这个

Get-Process
..Cmdlet将向您显示正在运行的进程,您可以通过此列表将逻辑写入foreach,并在powershell中直接将您的应用程序与regex匹配,我不知道Ruby,但理论上,您可以使用它调用powershell命令来执行相同的操作:

powershell.exe -command Get-Process
要终止进程,请执行以下操作:

Stop-Process <processId>
Stop-Process -processname <processName>
此外,还可以设置这些属性:

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

在WindowsXP上,我通过使用Windows任务调度器找到了一种绕过此限制的方法。对于Windows 7,默认情况下不安装telnet

我首先必须通过合并以下注册表设置,将本地帐户的网络访问:共享和安全模型更改为“经典–本地用户以自己身份进行身份验证”:

Windows注册表编辑器5.00版 [HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] “forceguest”=dword:00000000

我将它放在远程FTP服务器上的一个文件中,并使用FTP命令获取它

将其与regedit/s file.reg合并

然后我创建了一个运行一次的任务: SchTasks/Create/SC ONCE/RU“user”/RP pass/TN“StartApp”/TR“\”C:\Windows\NotePad.exe\”/ST 00:00:00

手动启动计划: Schtasks/run/tn“StartApp”

删除附表: schtasks/delete/F/tn“StartAPP”


这起作用了。疯狂的权利!多痛苦啊

在Windows XP上,我通过使用Windows任务调度器找到了绕过此限制的方法。对于Windows 7,默认情况下不安装telnet

我首先必须通过合并以下注册表设置,将本地帐户的网络访问:共享和安全模型更改为“经典–本地用户以自己身份进行身份验证”:

Windows注册表编辑器5.00版 [HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] “forceguest”=dword:00000000

我将它放在远程FTP服务器上的一个文件中,并使用FTP命令获取它

将其与regedit/s file.reg合并

然后我创建了一个运行一次的任务: SchTasks/Create/SC ONCE/RU“user”/RP pass/TN“StartApp”/TR“\”C:\Windows\NotePad.exe\”/ST 00:00:00

手动启动计划: Schtasks/run/tn“StartApp”

删除附表: schtasks/delete/F/tn“StartAPP”


这起作用了。疯狂的权利!多痛苦啊

为什么没有用户上下文?我以用户身份登录telnet。我不想重新启动机器,只想更新系统文件,比如程序的dll。好的,我们进入了澳大利亚的一些非常复杂的体系结构,只是为了解决应用程序在错误模式下启动的问题。如果出现最坏的情况,我可以做一个2行引导应用程序