0

テキスト ファイルへの保存を含む Visual Studio C# のアプリケーションを使用していますが、.exe を別のコンピューターに送信し、保存時に例外を発生させないようにするにはどうすればよいですか?

.exe ファイルをメールで送信する必要があり (はい、可能です)、このアプリケーションにはゲームの状態の保存が含まれています。この .exe ファイルを送信して、ユーザーが自分のコンピューターに保存できるようにするにはどうすればよいですか?

問題は、アプリケーションの実行可能ファイルを別のコンピューターに送信すると、保存時に例外が発生することです。他のコンピューターには、ゲームを保存しているテキスト ファイルがないためです。

ここに保存しています:

StreamWriter myFile = File.CreateText(Directory.GetCurrentDirectory()+"//ConnectFour.txt");

プロジェクトの obj/Debug/ で..

ご協力いただきありがとうございます :)

4

4 に答える 4

2

実行可能ファイルの送信は問題なく機能するはずです。

他のコンピュータに適切な Microsoft .NET Framework がインストールされていることを確認してください。

最新のフレームワーク インストーラー: MSDN

また、ファイルを保存するパスがリモート コンピューター上に存在することを確認してください。たとえば、D:\ ドライブに保存しようとしていて、それが存在しない場合です。例外が発生します。

于 2012-12-10T20:52:39.093 に答える
1

実行可能ファイルを電子メールで送信する際の問題は、ウイルス対策スキャナーです。それらのいくつかは、実行可能ファイルを含む電子メールを拒否します。他の人はメールを受け入れますが、添付ファイルを削除します。

解決策は、実行可能ファイルを非表示にすることです。これは、実行可能ファイルを圧縮して zip ファイルを送信することで実行できます。

多くの場合、これで問題を解決するのに十分ですが、一部のウイルス対策スキャナーは非常にスマートで、zip 添付ファイル内の実行可能ファイルを認識することさえあります。ここでの解決策は、zip ファイルをパスワードで暗号化することです。私はしばしばパスワード「pwd」を使用し、電子メールの本文に記載します。アンチウイルスは、(まだ) このテキストを理解できるほど賢くありません。


アップデート

今、私はあなたの問題を理解しています。実行可能ファイルの送信とは関係ありません。

アプリケーションは、このように開始されたディレクトリを特定できます

string dir = System.IO.Path.GetDirectoryName(
    System.Windows.Forms.Application.ExecutablePath
);

別の方法は次のとおりです (WinForms への参照がない場合):

string dir = System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetEntryAssembly().Location
);
于 2012-12-10T21:06:59.437 に答える
1

ほとんどの場合、現在の場所は現在のユーザーによって書き込み可能ではありません。

アプリケーションの起動元を制御できないため、「現在のディレクトリ」の使用は危険です。コマンド ライン ユーティリティでは非常に便利ですが、通常のウィンドウ アプリケーションではあまり役に立ちません。ファイルを保存できることがわかっている場所、つまり「マイ ドキュメント」を使用します。

var filePath = Path.Combine(
   Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\",
   ConnectFour.txt");
using(var  myFile = File.CreateText(filePAth))
{
  // save data here.
}
于 2012-12-10T21:14:48.937 に答える
1

ファイルをリモート マシンに保存するための十分な権限がない可能性があります。スローされている正確な例外に関する詳細情報 (例外の種類、メッセージ、スタック トレースなど) を提供していただければ、より正確な回答が得られます。

于 2012-12-10T21:33:00.100 に答える