我写了一个它运行的Windows服务,并且在大多数操作系统中都很好用。我已经缩小了从Windows 8升级的Windows 10导致了一个问题,即当服务设置为自动时,服务无法在重新启动时启动。 我发现延迟启动确实有效。 想知道是否有人知道完全从头开始安装和升级之间的细微差别可能会指向这个难以捉摸的问题的缩小。
如果不起作用,则不会生成任何日志或事件。它似乎没有尝试和失败 - 只是没有运行(开始)。
我刚刚遇到一个安装工作正常,操作系统从Win 8升级。似乎有一些不同的依赖。该服务是针对.Net Framework 4.0 x86编写的。 该服务手动启动就好了。 自动(启动时)启动不起作用。我正要说它失败了 - 但事实并非如此,因为它似乎甚至没有尝试过。
答案 0 :(得分:5)
我们在Windows 10中遇到了类似的问题,其中大多数基于.Net的服务在启动时会失败,但可以稍后手动启动就好了。出于某种原因,使用.NET编写的服务在Windows 10中启动需要更长时间。默认情况下,如果服务启动时间超过30秒而没有响应,则Windows会终止该服务。
我能够在注册表中将该行为更改为60秒。转到:
HKLM \系统\ CurrentControlSet \控制\
如果它尚不存在,请创建一个名为“ServicesPipeTimeout”的DWORD(32位)密钥(减去引号)。将其值设置为60000(十进制)。这与60秒(以毫秒为单位)相关。
我甚至创建了一个自动执行此命令的注册表文件:
Windows注册表编辑器版本5.00
[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制] “ServicesPipeTimeout”= DWORD:0000ea60
只需粘贴到记事本中并另存为.reg文件。
不延迟启动,但启动后服务响应时间增加。这解决了我们在多台机器上的问题。不幸的是,我仍然不知道为什么.NET服务需要很长时间才能终止它们。但是,我觉得这是微软的错误,并不一定是我们用户做错了什么......
答案 1 :(得分:2)
我们遇到类似的问题,其中一个服务(.net)在升级到Windows 10后在某些情况下无法自动启动。此外,在许多情况下,问题在更新到Windows build 10.0.10240后得到解决;但并非在所有情况下。事件日志中也没有错误。
更新:在某些情况下,延迟启动似乎也有效。
答案 2 :(得分:1)
我们创建的C ++ Windows服务也存在同样的问题。自动启动适用于大多数人。但是,我们现在有5个实例,客户的服务工作正常,现在它不会自动启动。
唯一可行的方法是设置延迟启动,但这不是一个好的选择,因为我们希望立即启动服务。我们还尝试添加NetLogon的服务依赖 - 这不起作用。
另请注意,这对客户来说工作正常,在某些时候(可能是Windows更新?)它会自动停止启动。
客户也可以进入服务并手动启动服务,并且可以正常运行。我将关注这个主题并希望找到比延迟启动更好的解决方案。
答案 3 :(得分:1)
为我们解决的问题是,如果您可以自行更改服务可执行文件:
在项目文件中,将Prefer 32位标志更改为 false ,然后重新安装该服务。
使用CorFlags.exe检查您的服务。 32BITREQ和32BITPREF应为0。
Version : v4.0.30319
CLR Header: 2.5
PE : PE32
CorFlags : 0x1
ILONLY : 1
32BITREQ : 0
32BITPREF : 0
Signed : 0