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 回答