首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Windows启动应用程序或批处理文件

问使用Windows启动应用程序或批处理文件
EN

Stack Overflow用户
提问于 2019-12-17 21:17:52
回答 3查看 908关注 0票数 1

我制作了一个C#应用程序,它备份一些文件并将其发送到FTP或Dropbox。此应用程序在服务器中工作。但有时我的应用程序会以某种方式崩溃或关闭。它必须一直开着。我想我可以做一个Windows服务来检查我的应用程序状态。如果我的应用程序关闭,再次打开它。我创造了这个服务。我再次使用Process.Start()方法打开我的应用程序。但没起作用。我更改了代码以打开一个批处理文件来打开我的应用程序。它也没用。然后我搜索了这个情况。我了解到Windows服务不能从桌面打开应用程序。我没有找到解决办法。

是否有任何解决方案,或有任何不同的方法,我可以使用Windows服务打开我的应用程序?

对不起我的英语不好。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-17 21:28:14

一个快速的解决方案是创建一个exe(Monitor.exe),以监视应用程序进程是否正在运行。如果没有启动您的应用程序。

Monitor.exe的唯一责任是确保主应用程序的启动和运行。

票数 0
EN

Stack Overflow用户

发布于 2019-12-17 21:57:23

您的应用程序完全没有理由崩溃。为此,在start上添加对未处理异常的处理

代码语言:javascript
复制
// For service
AppDomain.CurrentDomain.UnhandledException += ...
// For windows forms
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);

那么您的逻辑应该是-启动执行线程,如果该线程死了,则应该在这里处理它。

代码语言:javascript
复制
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
    // Log the exception, display it, etc
    // Restart your processor on new thread
    // count number of breakages. If it exceeds certain criteria, like total number,
    // or number per minute, stop service ans send yourself email - 
    // hey your service encounters too many exceptions
}

就问题的组成部分而言,请用DLL编写逻辑,然后可以在服务或应用程序或其他地方重用它。

但是,尽管如此,您的代码应该处理所有的异常并防止未处理的异常。而且,基于框架版本,它也可能有一些不同。请参阅HandleProcessCorruptedStateExceptionsAttribute

票数 0
EN

Stack Overflow用户

发布于 2019-12-18 08:44:34

我了解到Windows服务不能从桌面打开应用程序。

这是错误的,服务可以启动一个应用程序作为桌面用户的窗口。但是你需要做一些解决办法才能让它发挥作用。

问题是windows服务在与windows桌面用户不同的会话中运行。他们之间的互动是不允许的。这叫做:会话0隔离

您需要做的是,从windows服务中启动桌面应用程序“作为桌面用户”。Windows有CreateProcessAsUserA函数来帮助这方面的工作。

好的,我的密码在哪里?

就是这里我真的很喜欢这个示例类。"Impersonation.cs“,因为它使您很容易使用CreateProcessAsUser函数。您可以像这样调用该函数:

Impersonation.ExecuteAppAsLoggedOnUser("applicationName",为空);

还请确保将替换进程级令牌特权授予用户:https://defaultreasoning.com/2017/01/16/migration-assistant-error-replace-process-level-token/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59382215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档