我用Qt 6.4 for Windows写了一个程序。我运行的是Windows 11。该程序是一个非GUI程序(没有QWidgets等)。它会产生线程来倒计时,倒计时后它会播放一个音频文件。该程序会在一个名为log.txt
的文件中生成日志,并将日志保存在工作文件夹中(.exe文件所在的文件夹)。
下面是main()
函数:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
const QString baseName = "PeriodicSoundMaker_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
a.installTranslator(&translator);
break;
}
}
AudioManager();
return a.exec();
}
当我双击.exe文件时,我可以看到它在任务管理器中运行,我可以看到它产生日志并按预期倒数后播放音频文件。
我想在Windows启动时运行此程序,在任何用户登录之前,在登录屏幕上。我利用任务计划程序创建一个任务,这将在Windows启动时启动程序。
为了测试,我重新启动Windows并在登录屏幕上等待。倒计时后没有播放音频文件。
然后我登录到Windows,打开任务管理器,发现.exe文件正在运行。我也从任务计划程序中检查了同样的文件,发现任务正在运行。但是,我没有看到log.txt
文件中产生任何日志。如果程序启动,总会有一些日志。
这种不同行为背后的原因是什么?我可以做些什么来在Windows系统启动时运行程序?
1条答案
按热度按时间sczxawaw1#
我找到了解决办法。指定
Action
时,Start in (optional)
必须是.exe文件所在的文件夹。文件夹路径不能有任何双引号(“),即使路径中有空格。例如,如果程序位于
E:\My Programs\A B C\a.exe
,那么Start in (optional)
应该是E:\My Programs\A B C\
,不带任何引号。