我在客户端计算机上有一个Windows窗体应用程序。我试图通过telnet登录,关闭它,更新一些文件,然后重新启动它。
在客户端计算机上使用cmd并输入MyApp.exe非常适合启动它。但是,如果我在telnet窗口中执行此操作,则会发生奇怪的事情:应用程序在进程列表中启动,但它的表单都没有打开,也没有任何log4net日志记录完成。
发生了什么,我该如何解决这个问题?
编辑:所有基于表单的Windows应用程序似乎都是如此。自己尝试一下:telnet localhost =>记事本。它弹出用户界面而不是ui!
另外,我在所有这些机器上安装了RAdmin?从我所看到的它已经不存在的自动化设施,但也许有一些可以帮助我的东西?
答案 0 :(得分:1)
编辑:在我原来的回答中,我误解了你的问题,我以为你说你重新启动了机器。
话虽如此,我仍然可能尝试采取不同的方法。您可以在MyApp.exe中设置某种类型的自动更新服务。一种简单的方法是设置一个Web服务,MyApp.exe可以轮询该服务以查看新版本何时可用。然后,您需要使用更新程序来执行更新工作。
答案 1 :(得分:1)
我认为正在发生的事情是您的应用程序正在私有桌面上启动,然后在您关闭telnet会话后立即退出。我不知道如何让它在“当前/活动”桌面窗口启动,但要在注销telnet后继续运行,请尝试使用“start
”命令运行。
答案 2 :(得分:1)
您可以尝试使用VNCRobot,而不是使用telnet。我相信VNCRobot作为用户运行,应该共享同一个桌面。
免责声明:我从未使用过VNCRobot,我只是觉得值得一提。
答案 3 :(得分:1)
在Windows XP上,我通过使用Windows任务计划程序找到了解决此限制的方法。对于Windows 7,默认情况下不安装telnet。
我首先必须通过合并以下注册表设置,将本地帐户的网络访问:共享和安全模型更改为“经典 - 本地用户自行身份验证”:
Windows注册表编辑器版本5.00 [HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ 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”
这很有效。疯了吧!太痛苦了!
答案 4 :(得分:0)
如果您可以在这些计算机上运行PowerShell,您可以使用它来查找正在运行的进程并将其终止。该..
Get-Process
.. Cmdlet将向您显示正在运行的进程,您可以通过此列表编写foreach的逻辑并直接在PowerShell中将您的应用程序与regex匹配,我不知道Ruby但理论上您可以使用它来执行相同的调用powershell命令:
powershell.exe -command Get-Process
杀死一个进程:
Stop-Process <processId>
Stop-Process -processname <processName>
不太确定如何通过telnet启动GUI进程,我的设备上没有telnet设置。
也许你可以做类似的事情:http://www.peterprovost.org/blog/post/Powershell-Sudo-(sort-of)-for-Vista-UAC.aspx
将动词设置为“runas”就像在该地址的示例中一样,将调用UAC,这样做我无法杀死新进程,但是如果我设置的话我会杀掉它:
$psi.Verb = "open"
此外,您还可以设置这些属性:
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