我有一个系统服务运行在我的Windows机器上,它可以模拟当前登录的用户并代表他们启动应用程序(包括UI应用程序)。
当用户已经登录到他们的交互式会话、创建了他们的桌面等等时,它工作得很好。
服务的启动是自动的,因此它会在每次重新启动后自动启动。如果它试图在服务启动后立即运行某些程序(需要UI访问),该程序可能会失败-可能是因为自动登录进程仍在进行中,桌面尚未创建等。
问题是:如果服务“提前”启动,它如何等待交互会话完全初始化(除了等待一些任意时间,这不是最优的)?
或者,服务可以“延迟”启动吗?是否有注册表项、文件夹或其他东西可以用来将服务启动延迟到Shell准备就绪并且可以安全启动UI应用程序的那一刻?
发布于 2012-04-02 04:43:19
“在用户登录时执行一些代码”最简单的两种方法是编写一个.bat文件,并且:
1)将.bat文件放入启动文件夹<=注意:Windows7/Vista有一个新的“启动文件夹”位置
..。或者..。
2)创建一个在登录时调用.bat文件的新任务
I选项"2)“给你更好的控制。如果需要,它还允许.bat文件“以管理员身份运行”。
如果你想让ping文件暂停一下(例如,为了确保事情完全初始化),你可以在你的.bat文件中添加“.bat -w”。
示例:
@rem Waits 5 seconds before continuing
ping 1.1.1.1 -n 1 -w 5000 > nulhttps://stackoverflow.com/questions/9968099
复制相似问题