【问题标题】:File writing problem on Windows 7 Professional in c#c#中Windows 7 Professional上的文件写入问题
【发布时间】:2010-05-24 10:49:32
【问题描述】:

我有一个 C# 应用程序,我将一些数据写入文件。我在 Windows 7 专业版上遇到的问题是,当我将数据写入 C:\ProgramData 时,会抛出拒绝接受访问。如果我从管理员帐户登录,此问题就会消失,如果我从其他具有管理权限的帐户登录,则会出现此问题。此问题仅在 windows 7 专业版上产生,它在所有其他版本的 windows 7 以及 windows vista 上运行良好。

try
{
XmlTextWriter myXmlTextWriter = new XmlTextWriter("Configuration.xml", null);
            myXmlTextWriter.Formatting = Formatting.Indented;
            myXmlTextWriter.WriteStartDocument(true);
            myXmlTextWriter.WriteDocType("ApplicationConfigurations", null, null, null);
            ////myXmlTextWriter.WriteComment("This file represents another fragment of a book store inventory database");
            myXmlTextWriter.WriteStartElement("Configuration");
            myXmlTextWriter.WriteElementString("firstElement",  pe.ToString());
            myXmlTextWriter.WriteEndElement();

            myXmlTextWriter.WriteEndDocument();
            myXmlTextWriter.Flush();
            myXmlTextWriter.Close();
}catch(Exception e)
{
    //Exception is thrown in Win7 professional
}

【问题讨论】:

    标签: c# .net windows-7 uac xmlwriter


    【解决方案1】:

    这是正常的,非管理员用户帐户没有对 c:\programdata 具有写入权限。默认情况下仅分配读取、执行和列表权限。这包括启用了 UAC 的管理员帐户。

    AppData 文件夹应该用于写入文件。使用 Environment.GetFolderPath() 获取该文件夹的路径。

    【讨论】:

    • 你确定吗?我现在正在 Windows 7 上对其进行测试,即使在受限用户帐户上运行非提升权限,我也可以很好地写入 ProgramData 文件夹。但是,如果我尝试使用相同的测试写入 Program Files 文件夹,则会因未经授权的访问而失败。
    • 是的。但是,您的评论是我得到的普遍回应。我无法证明这一点,但我相当确定那里有解决常见问题的安装程序。在 Windows 的默认安装中,有 no 目录可供 所有 用户具有写入权限。提示“ProgramData,啊,那是程序存储数据的地方!”然后他们发现情况并非如此。因此,他们通过让安装程序使 ProgramData 目录对所有用户可写来解决他们的问题。 Boomshakalaka。
    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2011-04-18
    • 2010-10-12
    • 2018-06-22
    • 2011-09-26
    • 2013-01-16
    • 2011-01-02
    相关资源
    最近更新 更多