79

Visual Studio 2010と.NُET4.0を使用して非常にシンプルなウィンドウサービスを作成しました。

このサービスには、インストーラーが追加されていることを除いて、デフォルトのWindowsサービスプロジェクトから追加された機能はありません。

開発ボックスまたはドメイン内の他のWindows2008R2マシンで「installutil.exeappName.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つだけあり、依存関係は追加されていません。

私は、私たちの環境の複数のマシンと、お客様の2台のマシンでそれを試しました。マシンはすべてWindows2008R2であり、どちらも新規インストールです。1台のマシンには.net2.0と.net4.0しかありません。他の.net2、3、3.5および4。

私は各マシンのローカル管理者です。

私も64ビットインストーラーを試しましたが、次のエラーが発生するので、32ビットインストーラーを使用すると思います。 System.BadImageFormatException

任意のガイダンスをいただければ幸いです。ありがとう。

4

12 に答える 12

287

このエラーのもう1つの理由は、Windowsが信頼できないと見なすソースからプログラムをコピーしたことである可能性があります。右クリックしてファイルのプロパティを選択した後、[ブロックを解除]をクリックすると、アセンブリのブロックを解除できます。

于 2011-03-09T12:44:15.473 に答える
20

ファイルのブロックを解除する必要があります。または少なくともそれは私のものを修正したものです。

Powershellで「一括」ブロック解除を行うには

get-childitem *.* | Unblock-File 

またはDOSの場合:

FOR %a in (*.*) do (echo.>%a:Zone.Identifier)
于 2016-07-22T03:51:15.960 に答える
13

別のコンピューターから実行可能ファイルをコピーする場合、Windowsは保護のためにそれらにフラグを付けます。実行可能ファイルを右クリックし、プロパティで[ブロック解除]をクリックします。フラグをクリアし、サービス実行可能ファイルをインストールします。

于 2017-02-21T14:36:45.823 に答える
10

この問題は、ネットワーク上の場所からサービスをインストールしようとしたために発生しました。installutilを使用する前にservice.exeをローカルマシンにコピーすることで、問題が修正され、サービスが正常にインストールされました。

于 2012-02-02T01:40:40.227 に答える
2

投票することを忘れないでください...次のようにSCを試してください:1。コマンドラインを開きます2.以下を記述します-sc create ServiceName BinPath="ExePath"。結果の報告...

于 2010-11-10T10:04:25.340 に答える
1

私も同じ問題に直面しました。私の場合、新しいバージョンのユーティリティを展開していました。新しいexe、installogファイルをコピーしてから、utilsをアンインストールしようとしました。

古いバージョンをコピーして戻し、utilsをアンインストールし、新しいバージョンをコピーして再度インストールしました。とにかく、それは私が最初に従わなければならなかった論理的な順序です。

于 2012-01-31T20:18:36.290 に答える
1

私はこの問題を抱えており、.netバージョンのutilと私のサービスの違いについて
.net2用のutilと.net4を使用したサービスビルドを使用しています

于 2012-06-13T10:37:13.087 に答える
1

私の場合、このエラーは、サービスexeを渡す代わりに、サービスを含むディレクトリを誤ってInstallUtilに渡したことが原因で発生しました。

明らかに人為的エラーですが、エラーメッセージはかなり誤解を招くものでした。

于 2014-09-25T17:12:54.893 に答える
1

このコマンドは、開発者コマンドプロンプト実行管理者で使用できます

installutil C:\...\MyService\bin\Debug\MyService.exe
于 2016-08-02T12:53:09.303 に答える
0

上記の@doublehelixの応答によると、この回答は、Windows XPで実行されているサービスの問題に関連する特定の問題の軌道に乗っています(ブロック解除は、私が見つけたセキュリティタブのオプションではありません)。私の場合、実際の物理ディスクは同じでしたが、別のドライブ(つまり、Windowsと同じドライブ上ではなく、プログラムファイルの下でもない)からサービスを実行しようとしていました。サービスをProgramFilesフォルダーに移動すると、根本的な問題が解決しました。(@doublehelixの回答に対して「コメント」するつもりでしたが、現在のステータスではできないようです)。

于 2012-09-05T10:52:58.497 に答える
0

サービスファイルを右クリックしてプロパティを選択し、ブロック解除チェックボックスをオンにするだけです

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

于 2022-01-03T02:49:28.663 に答える
-2

サービスのセットアッププロジェクトを作成し、そのサーバーでMSIファイルを実行してみてください。

于 2010-11-10T09:50:33.113 に答える