【问题标题】:How to ensure C# application starts after windows is booted compltely如何确保 C# 应用程序在 Windows 完全启动后启动
【发布时间】:2023-03-10 12:53:01
【问题描述】:

我想创建一个简单的检查控制台应用程序,该应用程序应在启动时在开发人员的机器上运行并检查一些项目。这是为了确保所有开发人员都按照定期更新的预定义策略进行工作。

一切正常,除了这个控制台应用程序在 Windows 真正启动之前运行(用户尚未登录),并且我们的应用程序在某些地方遇到访问被拒绝的异常。

this answer 中,建议我们要么将控制台更改为 Windows 服务,要么将其设为 Windows 计划任务,这在我们的情况下都不是可取的。

有什么方法可以检查 Windows 是否已完全启动,并且用户已登录(例如在 while 循环中),然后在 .NET 中继续执行代码?

【问题讨论】:

  • 那么你现在如何开始呢?您听说过 Startup 文件夹吗?
  • “这是为了确保所有开发人员都按照预定义的策略工作” - 你一定有一些严重的信任问题。
  • 您描述的场景是不可能的,控制台模式应用程序要求用户登录才能启动。也许您依赖的服务需要更长的时间才能启动,但只要您没有发布任何诊断信息,这只是猜测。

标签: c# windows


【解决方案1】:
  1. 如果您可以使用用户凭据配置 windows 服务(您知道用户密码或可以要求用户配置服务),您可以使用用户凭据安装 windows 服务。选择自动延迟启动(解释here)。即使用户尚未登录,但使用他的凭据,此服务也会启动。
  2. 你可以使用Startup folder
  3. 您可以使用注册表 运行\regedit

打开

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

对于您要启动的每个程序,使用描述性名称自动创建一个新的字符串值,并将该字符串的值设置为程序可执行文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多