无法安装 Windows 服务

我已经创建了一个非常简单的窗口服务使用视觉工作室2010年和.N ET 4.0。

除了添加了安装程序之外,此服务没有从默认的 Windows 服务项目中添加任何功能。

如果我在我的开发框或我们域中的其他 Windows 2008 R2机器上运行“ installutil.exe appName.exe”,则 Windows 服务安装没有问题。

当我尝试在我们的客户站点上执行同样的操作时,安装失败,并出现以下错误。

Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.


Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or assembly 'file:///C:\TestService\WindowsService1.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).

此解决方案只有1个项目,没有添加任何依赖项。

我已经在我们的环境中的多台机器上和我们的客户中的两台机器上进行了试验。这些机器都是 Windows 2008 R2,都是新安装的。一台机器刚刚。2.0及。净值4.0。另一个。净收入2,3,3.5和4。

我是每台机器的本地管理员。

我也尝试了64位的安装程序,但得到以下错误,所以我认为32位的是一个使用。 System.BadImageFormatException

如有任何指导,我将不胜感激,谢谢。

57883 次浏览

您可以尝试为您的服务创建一个 安装项目并在该服务器上运行 MSI 文件。

别忘了投票。 试试下面的 SC: 1. 打开命令行 2. 写下面的- Sc create ServiceName BinPath = “ ExePath”。 结果报告。

此错误的另一个原因可能是您从 Windows 认为不可信的源复制了程序。 在右键单击并选择文件上的属性后,可以通过单击“ unblock”来解除程序集的阻塞。

我也面临着同样的问题。在我的例子中,我正在部署新版本的实用程序,我复制了新的 exe、安装日志文件,然后尝试卸载这些实用程序。

我复制了旧版本,卸载了实用程序,复制了新版本并重新安装。不管怎样,这是我应该首先遵循的逻辑顺序。

这个问题发生在我身上,因为我试图从一个网络位置安装服务。通过在使用 installutil 之前将 service.exe 复制到本地计算机,它修复了我的问题,并成功地安装了服务。

我有这个问题,它的不同之间的.net 版本的 util 和我的服务
我使用 util for.net2,并使用.net4构建我的服务

根据上面@doublehelix 的回复,这个答案让我找到了我的特定问题,这个问题与运行在 Windows XP 中的服务问题有关(在安全选项卡中我找不到 Unblock 这个选项)。在我的例子中,我试图从一个单独的驱动器上运行一个服务(即不在与 Windows 相同的驱动器上,也不在程序文件下) ,尽管实际的物理磁盘是相同的。将我的服务移动到 Program Files 文件夹解决了我的潜在问题。(我本打算对@doublehelix 的回答“评论”,但是我现在似乎不能这么做)。

在我的示例中,这个错误是由于不小心将包含服务的目录传递给 InstallUtil 而不是传递服务 exe 而造成的。

显然是人为错误,但我发现错误消息相当具有误导性。

需要解锁文件。 或者至少这是修复我的文件。

在 Powershell 做“批量”解锁

get-childitem *.* | Unblock-File

或 DOS:

FOR %a in (*.*) do (echo.>%a:Zone.Identifier)

您可以在开发人员命令提示符运行管理员中使用此命令

installutil C:\...\MyService\bin\Debug\MyService.exe

当我们从另一台计算机复制可执行文件时,Windows 会在它们上面标记一个标志以提供保护。在属性中单击 解除封锁。它会清除标志和服务可执行将安装。

只需右键单击您的服务文件并选择属性,然后选中 unblock 复选框

Https://brianseekford.azurewebsites.net/2011/07/13/hresult-0x80131515-when-running-installutil-to-install-a-net-service/

这里的工作就是解锁文件。奇怪的是,阻塞的文件来自一个有管理员特权的签名安装程序。必须一次解除多个文件夹中的多个文件的阻塞。

我使用了下面的注册表调整来添加上下文菜单到一个文件夹或文件时,按下 Shift + right-click(它不会显示,如果只是右键单击)。

每个代码块中对作者的信任度和引用。

文件夹调整 :

只需将其保存为 ShiftUnblockFolder.reg并导入到注册表中。

Windows Registry Editor Version 5.00


; Created by: Shawn Brink
; Created on: March 17th 2019
; Tutorial: https://www.tenforums.com/tutorials/129101-add-unblock-file-context-menu-windows-10-a.html


[HKCR\Directory\shell\unblock]
"MUIVerb"="Unblock"
"Extended"=""
"SubCommands"=""


[HKCR\Directory\shell\unblock\shell\001flyout]
"MUIVerb"="Unblock files only in this folder"


[HKCR\Directory\shell\unblock\shell\001flyout\command]
@="powershell.exe get-childitem -LiteralPath '%L' | Unblock-File"


[HKCR\Directory\shell\unblock\shell\002flyout]
"MUIVerb"="Unblock files in this folder and subfolders"


[HKCR\Directory\shell\unblock\shell\002flyout\command]
@="powershell.exe get-childitem -LiteralPath '%L' -recurse | Unblock-File"

单文件调整 :

ShiftUnblockFile.reg

Windows Registry Editor Version 5.00


; Created by: Shawn Brink
; Created on: March 17th 2019
; Tutorial: https://www.tenforums.com/tutorials/129101-add-unblock-file-context-menu-windows-10-a.html


[HKCR\*\shell\unblock]
"MUIVerb"="Unblock"
"Extended"=""


[HKCR\*\shell\unblock\command]
@="powershell.exe Unblock-File -LiteralPath '%L'"


[HKCR\Directory\shell\unblock]
"MUIVerb"="Unblock"
"Extended"=""
"SubCommands"=""


[HKCR\Directory\shell\unblock\shell\001flyout]
"MUIVerb"="Unblock files only in this folder"


[HKCR\Directory\shell\unblock\shell\001flyout\command]
@="powershell.exe get-childitem -LiteralPath '%L' | Unblock-File"


[HKCR\Directory\shell\unblock\shell\002flyout]
"MUIVerb"="Unblock files in this folder and subfolders"


[HKCR\Directory\shell\unblock\shell\002flyout\command]
@="powershell.exe get-childitem -LiteralPath '%L' -recurse | Unblock-File"