c#无法在特定计算机中写入文件(已解决但不知道原因)

时间:2014-09-12 10:11:02

标签: c# windows streamwriter

我有三台计算机供测试。

当我通过我的程序在XP(PC,它是我的开发平台)和Win7(PC)中编写文件时,两者都有效。

但在一台win7计算机(笔记本电脑)中,它无法写入,也没有例外。

由于Win 7(PC)可以完美运行我的程序,我认为这不是win 7的问题。

我发现当我使用我的c#程序时,它可以读取但无法写入文件。

我尝试将路径设置为c:/ Users / Local / AppData,但仍无法正常工作......

可以访问读写权限,我可以手动编写文件,这可能不是因为内存泄漏。

我试图以管理员模式打开我的程序。

我不知道为什么我的程序无法在该计算机中写入文件的任何其他原因。

我还尝试将目录创建为:

string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
if (!Directory.Exists(Path.Combine(appDataPath, "test")))
{
   try
   {
       Directory.CreateDirectory(Path.Combine(appDataPath, "test"));
   }
   catch (Exception ex)
   {
      MessageBox.Show("" + ex.ToString());
   }
}

代码可以在PC(XP和Win7)中运行,但仍无法在笔记本电脑(Win7)中运行......

我还在MessgeBox.Show方法下面使用CreateDirectory,它可以弹出测试消息!(即CreateDirectory的代码运行但是当我查看父目录时,目前还没有我要创建的目录......(但在PC中,目录是创建的),我看到有人有同样的问题,但解决方案对我没有帮助......

写文件的代码是:

try
{
     StreamWriter file = new StreamWriter(System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\logfile.txt");
     file.Write("test");
     file.Close();
}
catch (Exception ex)
{
      MessageBox.Show(ex.ToString());
}

为什么奇怪的笔记本电脑无法通过我的程序写文件?

编辑:

我的程序在文本框中有一些操作来记录要保存的数据,

操作是:当用户在文本框中单击时,将显示osk.exe(小键盘)。在我的笔记本电脑中,当我想运行它时,osk.exe会显示错误......

osk.exe的代码是:

System.Diagnostics.Process.Start("" + System.Environment.SystemDirectory + "/osk.exe");

当我删除该代码时,编写文件的代码简直有效!

也许原因是我先检查空文本框,然后用户点击“保存”按钮来写文件。由于代码尝试运行osk.exe时发生错误,文本框可能会返回null或其他内容,然后我的写文件代码将无法运行。

1 个答案:

答案 0 :(得分:0)

我知道这几乎不可能,但最近我遇到了类似的问题:

如果您没有收到异常,可能是因为您的计算机上的.NET Framework版本不匹配。这意味着,如果某些方法遇到了您正在使用的新重载,并且在以前版本的.NET中没有实现,那么它会在.NET内部抛出异常,而JIT编译器将尝试编译IL。

与PropertyInfo.GetValue(object)方法有同样的问题 - >在以前的版本中没有这样的方法,但PropertyInfo.GetValue(object,object [])

尝试设置(在项目属性中)目标框架,该框架与您在非工作机器上安装的框架相匹配。如果它编译,那么你必须寻找另一种解决方案。