【问题标题】:Delete Files/Folders under Program Files in Windows 7 / Vista在 Windows 7 / Vista 中删除 Program Files 下的文件/文件夹
【发布时间】:2010-12-13 21:20:53
【问题描述】:

我们正在重写我们的应用程序以使其与 Windows Vista/7 兼容。为此,我需要删除 %PROGRAMFILES% 下应用程序目录中的所有先前数据。这绝对不会在用户模式下工作,并且在管理模式下似乎也无法以编程方式工作。我正在尝试使用以下代码行:

File.Delete(filePath);

有没有办法在用户和管理员模式下编写代码来删除文件?展望未来,我们会将所有数据存储在 %ALLUSERSPROFILE% 目录下,但在那之前我需要编写迁移代码来为用户处理这个问题。

【问题讨论】:

  • 在安装更新时处理迁移不是更好吗(让安装程序完成工作)?
  • 是的,那样做会更好,这也是我更愿意做的。但是,这将导致我们当前分发应用程序的方式严重返工,并且超出了本项目的范围。

标签: c# .net windows windows-7 windows-vista


【解决方案1】:

没有。您必须以管理员身份启动应用程序才能获得对 %PROGRAMFILES% 的写入权限。此外,如果 UAC 已打开,即使以管理员身份运行,您仍可能会收到提示权限以继续。

正如 C-Pound Guru 在对您的问题的评论中所说,您的更新安装程序(应该由管理员运行)也应该清理旧文件。

【讨论】:

    【解决方案2】:
     if(System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
        {
            // Use a try block to catch IOExceptions, to 
            // handle the case of the file already being 
            // opened by another process. 
            try
            {
                System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
            }
            catch (System.IO.IOException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2012-07-12
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多