![将桌面软件作为“服务”运行](https://linux22.com/image/631476/%E5%B0%86%E6%A1%8C%E9%9D%A2%E8%BD%AF%E4%BB%B6%E4%BD%9C%E4%B8%BA%E2%80%9C%E6%9C%8D%E5%8A%A1%E2%80%9D%E8%BF%90%E8%A1%8C.png)
我们有一台 Windows Server Standard 2008 服务器,需要运行 QuickBooks Sync Manager,该应用程序只能通过一个用户帐户(配置它的帐户)正常运行。QuickBooks Sync Manager 仅在用户当前登录时才会运行。
问题是我们仅将该服务器用作文件服务器,没有人有任何理由登录它。
是否有某种方法可以让该应用程序在特定用户下运行,而无需该用户实际登录?
或者,有没有办法安排任务来自动登录特定用户?
答案1
去获取 Firedaemon(不会发布链接,但它是一个众所周知的工具,只需谷歌一下)。
将您的应用程序设置为新的 Firedaemon 服务运行(它将创建 Windows 服务)并将其设置为与桌面交互并以该特定用户的身份运行。
当您或其他管理员通过 RDP 登录时,您可以查看正在发生的事情,但打开 Firedaemon 并右键单击该服务并选择查看会话 0。这将向您显示“桌面”和 Quickbooks 应用程序。
希望有所帮助。
答案2
如果这是一个交互式应用程序,自动登录可能会起作用:
http://technet.microsoft.com/en-us/sysinternals/bb963905.aspx
自动登录使您能够轻松配置 Windows 的内置自动登录机制。Windows 无需等待用户输入其名称和密码,而是使用您通过自动登录输入的凭据(这些凭据在注册表中加密)自动登录指定用户。
自动登录非常容易使用。只需运行 autologon.exe,填写对话框,然后单击“启用”。要关闭自动登录,请单击“禁用”。此外,如果在系统执行自动登录之前按住 Shift 键,则将禁用该登录的自动登录。您还可以将用户名、域和密码作为命令行参数传递:自动登录用户域密码。
答案3
我知道这是一个老问题,但我来这里是为了寻找答案,所以我会说一下我使用的方法。SRVSTART 工作得很好,我创建了一个 ini 文件,说明要启动什么以及在哪个目录中启动程序,然后使用 SRVSTART exe 创建服务。然后使用 SC 设置描述。然后使用服务 UI 设置要用于服务的登录 ID。可以设置 SRVStart 来监视您的程序并在程序停止运行时重新启动它。到目前为止,它运行良好。这是作者页面的链接,您可以下载它。如果您获得源代码,它是旧的,为 Visual C++ 6.0 编写的。或者您可以在那里获取 exe 和所需的 dll。
http://www.rozanski.org.uk/software
这是我的示例 INI 文件(此示例位于 C:\SpecialService 文件夹中)SpecialService.ini:
[SpecialService]
startup=C:\SpecialService\SpecialProgram.exe
startup_dir=C:\SpecialService
shutdown_method=kill
auto_restart=y
restart_interval=60
下面是创建服务的命令:
srvstart install SpecialService -c C:\SpecialService\SpecialService.ini
最后,这是设置服务描述的命令:
SC description SpecialService "Put your description here in quotes... "