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

本文关键字:解决 不知道 文件 计算机 | 更新日期: 2023-09-27 18:21:35

我有三台电脑要测试。

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

但在一台win7电脑(笔记本电脑)中,它无法写入,也不例外。

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

我发现当我使用我的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)中仍然不工作。。。

我还在CreateDirectory方法下面使用MessgeBox.Show,它可以弹出测试消息!(也就是说,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或其他内容,那么我的写文件代码将不会被操作。

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

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

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

在以前的版本中,方法PropertyInfo.GetValue(object)->也有同样的问题。除了PropertyInfo.Get-Value(object,object[])之外,没有这样的方法

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