Service 当操作系统从Windows 8.1升级到Windows 10时,服务未运行

Service 当操作系统从Windows 8.1升级到Windows 10时,服务未运行,service,windows-10,Service,Windows 10,我们已将windows从8.1升级到10。 现在在Windows 10中,我们安装的服务没有运行。 如果我们在Windows 8.1上安装这些服务,这些服务将正常运行 在windows 10上,我们尝试了以下无法解决问题的方法 服务->选择服务->属性->将[登录]设置为本地服务 将服务文件所在文件夹的完全权限设置为Perticular user或everyone user 将文件夹的所有者更改为存在服务文件的everyone、system或Perculler用户 下面是一个可行的解决方案,但对

我们已将windows从8.1升级到10。 现在在Windows 10中,我们安装的服务没有运行。 如果我们在Windows 8.1上安装这些服务,这些服务将正常运行

在windows 10上,我们尝试了以下无法解决问题的方法

服务->选择服务->属性->将[登录]设置为本地服务

将服务文件所在文件夹的完全权限设置为Perticular user或everyone user

将文件夹的所有者更改为存在服务文件的everyone、system或Perculler用户

下面是一个可行的解决方案,但对我们来说并不可行,因为它需要密码,实际上我们想知道这个问题背后的实际原因

解决方法: 1.服务->选择服务->属性->将[登录]设置为可选择用户的帐户,并且需要密码。请参阅所附图片

请注意,该服务是一个dotnetc服务,它在内部运行一个jar文件。若它能够运行jar文件,那个么只有服务成功启动


提前感谢

我已经找到了原因和解决方案

[问题原因]

服务无法理解,要运行JAR文件,应该运行哪个程序

[详情]

我试着调试代码。 在进程启动的位置,出现如下图所示的弹出消息

位置:processSample.Start

这意味着用户至少需要选择一次程序。 如果我们选择[JavaTM Platform SE binary]一次,然后 服务始终成功运行。 此行为仅在Windows 10中存在。 除了程序选择外,运行服务还需要相关图像中显示的用户设置。 我想说的是,在默认程序设置中,已经为.jar文件选择了正确的程序,如下图所示,但windows 10仍然要求用户选择一次程序。 [解决方案]

使用以下设置从windowsc服务运行JAR文件:

sampleProcess.StartInfo.FileName = "javaw.exe";
sampleProcess.StartInfo.Arguments = "-jar Sample.jar";
sampleProcess.StartInfo.WorkingDirectory = @"C:\SampleFolder";
sampleProcess.StartInfo.UseShellExecute = false;
sampleProcess.EnableRaisingEvents = true;
sampleProcess.StartInfo.CreateNoWindow = false;
这里的工作目录是[Sample.jar]确实存在的位置。 此外,必须设置Path环境变量才能执行javaw.exe

在修复之前,我的实现如下所示,这并不适用于所有系统环境:

sampleProcess.StartInfo.FileName = "Sample.jar";
sampleProcess.StartInfo.WorkingDirectory = @"C:\SampleFolder";
sampleProcess.EnableRaisingEvents = true;
sampleProcess.StartInfo.CreateNoWindow = false;