0

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

在客户端机器上使用 cmd 并输入 MyApp.exe 可以很好地启动它。但是,如果我在 telnet 窗口中执行此操作,就会发生一些奇怪的事情:应用程序从它现在在进程列表中的位置开始,但它的任何表单都没有打开,也没有完成任何 log4net 日志记录。

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

编辑: 这似乎是所有基于表单的 Windows 应用程序的情况。自己尝试一下:telnet localhost => 记事本。它会在用户界面中弹出,但不会在 ui 中弹出!

另外,我在所有这些机器上都安装了RAdmin ?从我所看到的它有不存在的自动化设施,但也许有一些东西可以帮助我?

4

5 回答 5

1

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

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

Windows 注册表编辑器版本 5.00 [HKEY_LOCAL_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"

这奏效了。疯了吧!多么痛苦!

于 2015-02-20T21:43:43.180 回答
1

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

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

于 2009-06-10T21:33:52.783 回答
1

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

于 2009-06-10T21:26:19.523 回答
1

编辑:在我原来的回答中,我误解了你的问题,我以为你说你重启了机器。

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

于 2009-06-10T20:54:30.320 回答
0

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

Get-Process

..Cmdlet 将向您显示正在运行的进程,您可以编写逻辑以通过此列表进行 foreach 并直接在 powershell 中将您的应用程序与正则表达式匹配,我不知道 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
于 2009-06-10T22:12:24.017 回答