我的Windows计算机上运行的系统服务可以模拟当前登录的用户并代表他们启动应用程序(包括UI应用程序)。
当用户已登录交互式会话,创建桌面等等时,它可以正常工作。
该服务的启动是自动的,因此每次重启后都会自动启动。如果它在服务启动后立即尝试运行某些程序(需要UI访问),则该程序可能会失败 - 可能是因为自动登录过程仍在进行中,尚未创建桌面等等。
问题是:如果服务“早期”启动,它如何等待交互式会话完全初始化(除了等待一些任意时间,这不是最佳的)?
或者,该服务可以“迟到”启动吗?是否有一个注册表项,文件夹或其他东西,我可以用它来延迟服务启动到Shell准备就绪并启动UI应用程序的时候?
答案 0 :(得分:2)
“用户登录时执行某些代码”最简单的两种方法是编写.bat文件,然后执行以下任一操作:
1)将.bat文件放在启动文件夹中 < =注意:Windows 7 / Vista具有“Startup folder”的新位置
......或......
2)创建一个在登录时调用.bat文件的新任务
我选项“2)”为您提供更好的控制。如果需要,它还允许.bat文件“以管理员身份运行”。
如果您想暂时暂停.bat文件(例如确保完全初始化的话),可以在.bat文件中添加“ping -w”。
实施例
@rem Waits 5 seconds before continuing
ping 1.1.1.1 -n 1 -w 5000 > nul