用户登录Windows后运行命令

时间:2013-05-31 12:30:38

标签: c# startup execute

对于某些CAD软件,我一直在制作清理程序(WPF),它可以清除我不再需要的某些类型的临时文件和日志文件,但是我的cad软件本身并没有清理。

当我进入WPF应用程序时,我只是制作了一个按钮来清理我不需要的任何文件类型。

现在我一直在寻找一个让我在登录Windows后执行的功能。所以我不会尝试在启动后执行完整的程序,只是程序中的一个命令。我知道在Windows中有一个名为startup的文件夹,但我不想使用那个。 是否有可能以不同的方式做到这一点?所以我可以在我的应用程序中创建一个复选框,我可以设置是或否使其在启动时运行?

我一直在四处寻找,但还没有真正发现这一点。

3 个答案:

答案 0 :(得分:1)

根据你的编辑;

在这篇文章中查看你的启动选项; How do I set a program to launch at startup

然后添加'所以我不会尝试在启动后执行完整程序,只有程序中的一个命令';利用启动参数。 使用命令行参数为应用程序提供,并在应用程序的Program.cs中进行检查。

设置正确的参数后,只需清理文件,不要显示界面。 如果未设置参数(当用户只需双击图标时就不会出现这种情况)正常运行您的程序。

要使用command-line arguments,只需在Main方法中添加string []参数,就像这样;

public static void Main(string[] args)
   {
       Console.WriteLine("Number of command line parameters = {0}",
          args.Length);
       foreach(string s in args)
       {
          Console.WriteLine(s);
       }
   }

您的完整(伪)代码如下所示:

public static void Main(string[] args)
   {
       if (args[0].Equals("/JUSTCLEANPLEASE"))
          JustClean();
       else
          Application.Run(new Form1());
   }

答案 1 :(得分:1)

为什么不想使用自动启动目录?

有一些替代方案。请参阅此知识库文章: http://support.microsoft.com/kb/137367/en-us 当您在链接中指定的其中一个节点中创建条目时,您可以控制是否要在每次启动时运行某些内容或仅运行一次(请参阅RunOnce)。

简单的方法是在临时目录中创建批处理文件,或者在不删除它的地方创建批处理文件,并将其添加到适合您的其中一个自动运行节点。 有关如何使用C#访问注册表的示例很多。 编辑:或者看看Gerald Versluis提供的链接 但请记住,这些不同节点的Run和RunOnce存在差异

答案 2 :(得分:0)

不确定您的程序是如何设置的,但我会从逻辑中拆分用户界面(GUI)。

您可以为逻辑创建服务,WPF用户界面将单独调用此服务。

然后,您可以编写一些代码来调用服务,而无需使用GUI。

查看MSConfig.exe以更好地控制启动和服务等。