使用服务从本地硬盘启动未签名的程序时提示安全警告

使用服务从本地硬盘启动未签名的程序时提示安全警告

我有一个远程 Windows Embedded 盒(基本上是 WinXPSP3 的有限功能副本),上面有一个 Windows 服务,它的唯一目的是确保特定应用程序的副本正在运行。如果没有,它会在代码中使用 .NET Process.Start() 调用来启动副本。

我们在近 1300 个与此非常相似的机器上运行了此服务和程序,没有任何问题。但是,对于这个特定的机器,当服务(以“本地系统”运行)尝试启动软件时,会弹出安全警告提示,软件无法启动。然后,服务重复该命令(因为软件没有启动),最终结果是出现 100 个安全警告对话框,并且没有运行任何软件。显然这是一个问题,因为我们无法照看这个机器(或任何其他机器),并且该软件对我们的业务运营至关重要,这涉及健康和生命安全。

当以默认登录用户身份启动软件时,软件启动正常。软件驻留在相关机器的硬盘上,而不是任何网络共享中,因此区域应该是“我的电脑”。该文件被“阻止”,但后来被“解除阻止”,没有任何变化。

假设无法对服务或软件进行任何更改,但我可以对 Windows 环境本身进行任何操作,例如更改运行服务的用户帐户、修改 Internet 选项、组策略等。还假设 .exe 文件在 GP 中被列为“安全”低风险文件,启动应用程序时不会提示 Intranet 安全设置,并且没有受信任的站点/域。基本上,我已经尝试了 Google 搜索中提到的所有方法,以禁用所有应用程序的安全警告,但问题仍然存在。

答案1

将应用程序签名的证书添加到电脑“受信任的发布者”列表。您需要通过 GP 或通过 mmc 手动打开它来执行此操作。您可能已将证书添加到用户的证书存储,这就是为什么当您以系统身份运行时它不受信任的原因。将其添加到计算机存储后,看看它是否正常工作。

在此处输入图片描述

答案2

Dim infoStart As New System.Diagnostics.ProcessStartInfo
Dim strFile As String = "SomeFileName.exe"
infoStart.FileName = strFile
infoStart.UseShellExecute = False '<---- this is what you want
Process.Start(infoStart)

相关内容