Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows启动时运行程序(登录前)_C#_.net - Fatal编程技术网

C# Windows启动时运行程序(登录前)

C# Windows启动时运行程序(登录前),c#,.net,C#,.net,我想知道在登录windows之前是否可以运行我的应用程序。?它实际上是一个WinForm应用程序(最好不是Windows服务) 我的意思是,我的应用程序在登录之前就必须运行,并且应该放在系统托盘上,我可以从中“显示”或为用户打开界面。这篇MS文章可能会有所帮助,但它有点过时: 不过,希望它能让您走上正轨。您可以使用Windows任务调度器在计算机开机时安排运行任何应用程序。这里有一个相应的选项。 但你为什么需要这个?您应该为此使用服务。我认为,在用户登录系统之前获取用户输入是没有意义的。因此,

我想知道在登录windows之前是否可以运行我的应用程序。?它实际上是一个WinForm应用程序(最好不是Windows服务)


我的意思是,我的应用程序在登录之前就必须运行,并且应该放在系统托盘上,我可以从中“显示”或为用户打开界面。

这篇MS文章可能会有所帮助,但它有点过时:


不过,希望它能让您走上正轨。

您可以使用Windows任务调度器在计算机开机时安排运行任何应用程序。这里有一个相应的选项。
但你为什么需要这个?您应该为此使用服务。

我认为,在用户登录系统之前获取用户输入是没有意义的。因此,如果应用程序需要用户输入,为什么要在用户登录之前启动它?如果应用程序刚刚开始一些后台工作,那么您应该使用windows服务,因为这是windows中首选的方式。

要有:

  • 在系统启动和用户登录之间发生了一些事情
  • 通知区域中供用户交互的图标
您必须将应用程序分成两个独立的组件。其中之一是WinForms/WPF应用程序,它提供通知区域图标并允许用户与之交互。另一个将是Windows服务,或者可能是计划任务

完成此操作后,windows服务可以专注于在登录之前执行任何需要执行的操作,通知区域应用程序可以负责向最终用户显示结果或其他任何操作

要回答您在评论中提出的有关从事件日志读取数据的问题,可以这样做。这里还有其他问题可以给你这个特别的答案:


输入
运行gpedit.msc
,用于集团策略, 您可以在那里设置启动脚本。 应用程序将在Windows登录之前启动, 生产步骤:-

Start --> Run --> gpedit.msc --> Local Computer Policy --> Windows Settings --> Script (Startup/ShutDown),
添加您的
.exe
它将在登录前启动。 不要在组策略中尝试更多,这可能会对系统有害

通过编程逻辑, 尝试使用注册表项 此值正在注册表中更新,
通过我们的程序,我们可以直接更新注册表,然后我们可以调用应用程序

为什么不让它成为一项服务?服务不应该与桌面交互,这对winform应用程序来说可能是一件坏事…您需要将其重新设计为一项服务,IMO@Sisya,根据我的回答,你必须写两个独立的部分。请参阅以了解原因(某种程度上)!是的,Rob就是write,在登录之前运行的程序不会出现在托盘中,但您可以编写服务并编写与服务交互的托盘应用程序。我的意思是,我的应用程序必须在登录之前运行,它应该位于系统托盘上,我可以从中“显示”或为用户打开界面。我不这么认为,此方法实际上在Shell之前运行,因此在GUI加载之后但在Explorer加载之前。它确实指出,您的程序必须启动资源管理器才能让windows继续运行。如果在Vista或更高版本上运行计划任务,则比使用服务更好,并且您无需修改代码。这将允许在需要时在管理员帐户下运行程序,同时仍然有一个UI,但我强烈建议将其拆分,以便UI在用户帐户下运行,并在需要时使用WCF与托盘图标通信。我们通过使用单个主应用程序并扫描“-service”参数来拆分应用程序如果我们找到它,服务就会启动。如果我们不这样做,我们将启动用户界面。如果你想把你自己的信息放在你的个人资料页面上。