问题标签 [windows-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1482 浏览

c++ - 远程安装windows服务

我需要在多台计算机上远程安装 windows 服务,所以我使用了 Winapi 中的 CreateService() 和其他服务功能。我知道我需要访问的机器的管理员密码和用户名。为了访问远程机器,我在 LogonUser 的帮助下模拟调用进程,如下所示:

因此,我可以访问域中的机器,但有些计算机不在域中。在域外的机器上,此代码不起作用。有没有办法在域外的机器上访问服务管理器?

0 投票
19 回答
319275 浏览

java - 如何从 Java 应用程序创建 Windows 服务

我刚刚继承了一个需要在 XP 和 vista 上作为服务安装的 java 应用程序。自从我以任何形式使用 Windows 已经有大约 8 年了,而且我从来不需要创建服务,更不用说像 java 应用程序之类的东西了(我有一个应用程序的 jar 和一个单一的依赖 jar - log4j )。使它作为服务运行所需的魔法是什么?我有源代码,因此可以进行代码修改,尽管最好避免。

0 投票
14 回答
656074 浏览

windows-services - 如何在 Windows 中删除服务?

我有几个旧服务要完全卸载。我怎样才能做到这一点?

0 投票
10 回答
401473 浏览

windows-services - 如何在本地系统帐户下运行 CMD.exe?

我目前正在运行 Vista,我想手动完成与我的 Windows 服务相同的操作。由于 Windows 服务在本地系统帐户下运行,我想模拟这种相同的行为。基本上,我想在本地系统帐户下运行 CMD.EXE。

我在网上找到了建议使用 DOS 任务计划程序 AT 命令启动 CMD.exe 的信息,但我收到了一个 Vista 警告,“由于安全性增强,此任务将在除此之外的时间运行,但不会以交互方式运行。” 这是一个示例命令:

另一种解决方案建议通过仅启动 CMD.exe 的服务控制 (sc.exe) 创建辅助 Windows 服务。

在这种情况下,服务无法启动并导致以下错误消息:

第三个建议是通过计划任务启动 CMD.exe。尽管您可以在各种帐户下运行计划任务,但我不相信本地系统帐户是其中之一。

我也尝试过使用 Runas,但认为我遇到了与运行计划任务时相同的限制。

到目前为止,我的每一次尝试都以失败告终。有什么建议么?

0 投票
7 回答
27919 浏览

c# - 如何从与桌面交互的应用程序与 Windows 服务进行通信?

使用 .Net 与服务交互的最佳方式是什么(即大多数托盘应用程序如何与其服务器通信)。如果这种方法也是跨平台的(在 Mono 中工作,所以我猜远程处理已经过时了?)


编辑:

忘了提一下,我们仍然必须在现场支持 Windows 2000 机器,所以 WCF 和任何高于 .Net 2.0 的东西都行不通。

0 投票
1 回答
2800 浏览

windows-services - 如何让 runonce 运行,而无需管理员登录

如果后台有以管理员身份运行的服务,是否有任何方法可以强制使用 RunOnce 更新软件,而无需管理员登录?

编辑:我想要做的主要事情是在 RunOnce 运行时运行,在资源管理器启动之前运行 IE。我需要能够安装东西,而无需启动管理员帐户。

0 投票
8 回答
30984 浏览

c# - 我希望我的 C# Windows 服务自动更新

是否有可用于使 C# Windows 服务自动检查更新版本并自行升级的框架?我当然可以编写代码来实现这一点,但我正在寻找一个已经实现并且(最重要的是)经过测试的框架。

[编辑] 这是一个类似问题的链接,其中包含有助于实现此目的的现代项目的链接:Auto-update library for .NET?

0 投票
12 回答
27754 浏览

c# - 在安装 .Net 服务期间创建自定义事件日志和事件源的最可靠方法是什么

在安装 .Net Windows 服务期间,我难以可靠地创建/删除事件源。

这是我的 ProjectInstaller 类的代码:

引用的外观方法只返回日志、服务等名称的字符串。

此代码大部分时间都有效,但最近在安装后,我开始让我的日志条目显示在应用程序日志中,而不是自定义日志中。日志中还有以下错误:

找不到源 (AutoCheckout) 中事件 ID (0) 的描述。本地计算机可能没有必要的注册表信息或消息 DLL 文件来显示来自远程计算机的消息。您可以使用 /AUXSOURCE= 标志来检索此描述;有关详细信息,请参阅帮助和支持。

由于某种原因,它要么在卸载期间没有正确删除源,要么在安装期间没有创建它。

感谢您对此处最佳实践的任何帮助。

谢谢!

此外,这是我如何将异常写入日志的示例:

关于 stephbu 的回答:推荐的路径是安装程序脚本和 installutil,或 Windows 安装程序。

我正在使用一个安装项目,它执行服务的安装并设置日志。无论我使用 installutil.exe 还是 windows 安装项目,我相信它们都调用了我上面显示的相同的 ProjectInstaller 类。

如果在重新启动之前没有真正删除日志,我会看到我的测试机器的状态如何导致错误。我将进行更多实验,看看是否能解决问题。

编辑: 我对在安装服务期间注册源和日志名称的可靠方式感兴趣。因此,如果该服务之前已安装,它将删除源,或在后续安装期间重用源。

我还没有机会学习 WiX 来尝试这条路线。

0 投票
5 回答
1101 浏览

windows - Windows下Services可以做什么?

有人对 XP 下的 Windows 服务功能有很好的指南吗?特别是,我试图找出当作为服务运行的程序试图打开窗口但没有被授予与桌面交互的权限时会发生什么。

基本上,我有一个程序是/曾经是一个 GUI 应用程序,它应该能够作为长期后台处理的服务运行。重写程序以在进行后台处理时不显示 GUI 元素是一项重大工作,所以我想看看是否有一种方法可以忽略 UI 元素。只要没有打开太多窗口,它现在就可以工作了。我试图弄清楚我可能会遇到什么限制。理想情况下,会有一个 MSDN 页面讨论这个问题,但我还没有找到一个。

0 投票
28 回答
258002 浏览

c# - 调试 Windows 服务的更简单方法

有没有比通过 Windows 服务控制管理器启动服务然后将调试器附加到线程更简单的方法来单步执行代码?这有点麻烦,我想知道是否有更直接的方法。