0

我遇到了从特定目录获取顶级目录完整文件名的意外问题。C# 会引发错误,并且不会列出特定目录中的任何内容。但是 MS DOS 对我的命令没有问题:*"dir C:\windows\prefetch\*.pf"

Visual Basics 6旧的“ Dir Function ”也毫无怨言地做到了。“ Windows 资源管理器”将其打开,并没有向我询问任何内容。“ Nirsofts Tool Suit”也立即列出它,没有任何问题。这些工具中的任何一个都不需要以特殊权限运行,只需双击应用程序图标即可完成任务。

我环顾四周,没有发现任何东西,什么可以回答这个奇怪的问题。我的用户可以访问该目录,如果我使用任何其他应用程序进入它,现在有一个问题,为什么 C# 会抛出一个“未经授权的访问异常”,这很奇怪,因为我可以访问这个文件夹。

我不想用管理员权限提升我的应用程序,也不想为它创建额外的 xml 来以最高权限运行它。必须避免使用不可靠的黄色标高框。

现在我的问题是:当所有其他应用程序都可以这样做时,我为什么不能列出此文件夹中的文件名。如果“ Directory.GetFiles()”失败,我需要什么代码?框架目录类中是否有任何标志或属性允许我的应用程序访问文件,无论如何。

这里我的代码失败(使用 System.IO):

private void button1_Click(object sender, EventArgs e)
    {

        textBox1.Text = textBox1.Text.Substring(0, 0); //clear the textBox1

        //Unauthorized access exception and yellow bar in this line
        foreach(string FileX in Directory.GetFiles(Path.Combine(Environment.GetEnvironmentVariable("windir"), "prefetch"), "*.pf"))
        {
            textBox1.Text += FileX;
        }
    }
4

1 回答 1

1

我是否正确理解您只需要带有目录名的文件名。这段代码对我有用,不需要海拔。

 private void button1_Click(object sender, EventArgs e)
    {
        string folder = @"C:\windows\prefetch";
        string filemask = @"*.pf";
        string[] filelist = Directory.GetFiles(folder, (filemask));

        //now use filelist[i] for any operations. 
    }
于 2013-08-06T05:54:13.977 回答