在用户登录到Windows后运行一个命令。
在用户登录到Windows后运行一个命令。
我正在为一些CAD软件制作一个清理程序(WPF),它可以清理我不再需要的某些类型的临时和日志文件,但我的CAD软件本身不会清理这些文件。
由于我将其制作为一个WPF应用程序,所以我只需创建一个按钮来清理我不需要的任何文件类型。
现在我一直在寻找一种方法,在我登录Windows后执行它。因此,我不会尝试在启动后执行整个程序,只需执行程序中的一个命令。我知道Windows中有一个名为启动(startup)的文件夹,但我更愿意不使用它。
有没有其他方法可以做到这一点?我可以在我的应用程序中添加一个复选框,以设置是或否在启动时运行它吗?
我一直在寻找,但实际上没有找到关于这方面的任何信息。
用户想要在Windows用户登录后运行一个命令,但是不想在启动时运行整个程序,只想运行程序中的某个命令。为了解决这个问题,可以通过设置启动选项来实现程序在启动时自动运行。并且可以在应用程序的Program.cs文件中添加一个命令行参数,当参数设置正确时,清除文件并且不显示界面,当参数未设置时(用户双击图标启动程序时),正常运行程序。
具体操作步骤如下:
1. 检查启动选项,参考链接:How do I set a program to launch at startup
2. 修改代码,在Program.cs文件中添加命令行参数处理,代码如下:
public static void Main(string[] args) { if (args[0].Equals("/JUSTCLEANPLEASE")) JustClean(); else Application.Run(new Form1()); }
3. 在JustClean()方法中进行文件清理操作。
4. 当用户登录后,程序会自动运行,如果设置了正确的命令行参数(/JUSTCLEANPLEASE),则执行文件清理操作并隐藏界面;如果未设置命令行参数,则正常显示界面运行程序。
通过以上操作,用户可以实现在Windows用户登录后运行指定命令的需求。
问题的原因是不想使用自动启动目录。解决方法是可以使用以下替代方案之一:
1. 在注册表中创建一个条目,并在每次启动或仅在一次启动时运行某个命令。可以参考微软的知识库文章:http://support.microsoft.com/kb/137367/en-us。
2. 可以创建一个批处理文件,放在一个不会被删除的临时目录或其他合适的位置,并将其添加到适合的自动运行节点中。可以使用C#来访问注册表的示例很多。
需要注意的是,不同节点的Run和RunOnce之间存在差异。