

友人に頼まれてVS2010でC#.netでプログラムを組みました。  
私のPCでは問題なく動作するのですが、同じwindows7の友人のPCで起動すると

問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合はwindowsから通知されます。というメッセージが現れます。  
![画像の説明をここに入力](https://i.stack.imgur.com/bNOJv.png)

どこにどのようにすれば正常動作させることができるか思い当たる方はいらっしゃらないでしょうか？  
友人への受け渡しにレンタルサーバにexeファイルを圧縮したzipファイルをアップロードしてそれをダウンロードする形で渡したのですが、そういった渡し方が何かのセキュリティに引っかかったのではないかとも考えています。

よろしくおねがいします。


CC BY-SA 3.0
2015-06-14T14:54:02.747
11333
2015-07-24T00:05:50.580
2015-06-14T22:47:50.777
2238
8823
question
windows .net visual-studio
visual studioで作ったプログラムが起動できない。


プログラムのエラー処理がなされていない場合に表示されるダイアログです。  
自分のPCで動作するのは偶然なだけですので、きちんとエラー処理を行いましょう。どのようなエラーが発生しているのかはプログラム自身、および作者のあなたにしかわかりません。


CC BY-SA 3.0
2015-06-14T23:34:10.193
11341
2015-06-14T23:34:10.193
4236
11333
answer


【よくある可能性】

  * 必要なライブラリ(DLL)が不足しているか、バージョンが異なる。
  * .NET Frameworkのバージョンが古い、または、破損している。
  * 必要なアクセス権限が不足している。ファイルを書き込みできない等。
  * セキュリティソフトの影響を受けている。

【解決策】  
**参照しているライブラリのバージョンに矛盾がないか確認する。**  

[code]

    hoge.exe --- piyo.dll ver 1.0.1.0
    fuge.dll --- piyo.dll ver 1.0.0.9
    
[/code]

このような構成になっている場合、piyo.dllのバージョン違いによる影響を受けることがあります。  
fuge.dllがpiyo.dll ver 1.0.1.0を参照するように修正する必要があります。

**可能であれば、ログを確認してもらう**

.NET アプリケーションが不正終了した場合、 **管理ツール→イベントビューア** の **Windowsログ→アプリケーション**
にて例外を確認できます。


CC BY-SA 3.0
2015-06-14T23:58:59.227
11342
2015-06-14T23:58:59.227
2207
11333
answer


一番ありそうな原因は、他の方の回答にあるようなライブラリや必要なファイルが無い、  
といったものですが、ほかにも「そもそもプログラムにバグがある」可能性もあります。

たとえば

  * あなたのパソコン固有のフォルダやファイルが無いと動かない仕組みではないか。
  * 特定のアプリやデータが無いと動かない仕組みではないか。

といったあたりを確認されてみてはどうでしょうか？  
（これをバグと呼ぶかどうかは微妙かもしれませんが、期待通りに動かない原因、  
という意味では広義のバグでしょう）

一番手っ取り早いのは、きちんとしたエラー処理を行い、どんなエラーが出ているか  
具体的に突き止める手段をプログラムに付け加えることです。エラーが起きたら、  
その内容やその時のデータをテキストファイルに出力するようなエラー処理を追加し、  
改めてご友人のPCで動かしてもらう、というのが手っ取り早いかもしれません。


CC BY-SA 3.0
2015-07-15T06:13:31.110
12373
2015-07-15T06:13:31.110
10538
11333
answer


あくまで可能性ですが、「プログラム中でDLLの動的読み込みを行っていて」「ロードするDLLが『他のコンピューターから取得されたファイル』とマークされている」場合はDLLの読み込みに失敗します。

![画像の説明をここに入力](https://i.stack.imgur.com/inbRl.png)

ファイルを圧縮せずに配布したり、ZIPファイルをエクスプローラーで解凍しているような場合はセキュリティフラグが立ちますのでご確認ください。


CC BY-SA 3.0
2015-07-15T21:57:07.770
12400
2015-07-15T21:57:07.770
5750
11333
answer


みなさんありがとうございました。  
エラー処理をしていないというのはその通りでちゃんとエラー処理をするのが本来なのですが、部分的に自分で作っていない部分もありすべてを理解して作り直すのが困難であったため、動かしたいPCにVSを入れてそちら側でビルドすることで動かしました。

皆さんありがとうございました。


CC BY-SA 3.0
2015-07-24T00:05:50.580
12632
2015-07-24T00:05:50.580
8823
11333
answer