【问题标题】:C# - UnauthorizedAccessException in Directory.CreateDirectory()C# - Directory.CreateDirectory() 中的 UnauthorizedAccessException
【发布时间】:2011-11-03 20:04:27
【问题描述】:

我是 C# 新手,但我想我在 Directory.CreateDirectory 中使用了一个简单的命令, 虽然我只是在自己的 PC 上构建,但一切都很好。但是当我发布它并在其他PC上打开该应用程序时,它抛出了这个异常,我没有找到关于如何在代码源上修复它的答案。 我尝试在 Win7 中以管理员身份运行它,但也没有用。 这是代码。它是葡萄牙语的,但我认为这不会有问题:)

非常感谢大家。

string diretorio = @"C:\Program Files\LAPER\EqNumDPI\Edifícios\" + NomeEdificio;

        if (MessageBox.Show("Você tem certeza de que inseriu os dados corretamente?\nEsses campos não poderão ser alterados posteriormente.",
            "[LAPER] Cálculo do EqNumDPI", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,
            MessageBoxDefaultButton.Button2) == DialogResult.OK)
        {
            TelaAdicionarAmbiente Tela = new TelaAdicionarAmbiente();
            if (!Directory.Exists(diretorio))
            {
                Directory.CreateDirectory(diretorio);
                StreamWriter file2 = new StreamWriter(@"C:\Program Files\LAPER\EqNumDPI\Edifícios\"+NomeEdificio+"\\metodo.txt", true, Encoding.ASCII);
                if (rBArea.Checked) file2.Write("AREA");
                else file2.Write("ATIVIDADE");
                file2.Close();
                this.Close();
            }
            else
            {
                MessageBox.Show("Nome de edifício já existe.\nPor favor, insira outro nome.",
                    "[LAPER] Cálculo do EqNumDPI",MessageBoxButtons.OK,MessageBoxIcon.Stop);
            }
        }

【问题讨论】:

  • 您能发布完整的异常跟踪吗?另外,什么是“NomeEdificio”?

标签: c# exception directory unauthorized unauthorizedaccessexcepti


【解决方案1】:

此异常通常意味着程序运行所使用的帐户(默认为登录用户的帐户)没有创建命名目录的正确权限。

MSDN 在Directory.CreateDirectory 的文档中对UnauthorizedAccessException 有这样的说法:

调用者没有所需的权限。

授予帐户正确的权限,一切都会好起来的。

【讨论】:

  • 实际上我是在单用户 PC 上以管理员帐户运行的。有没有可能是电脑的管理员没有这些权限?
  • 右键单击应用程序并选择“以管理员身份运行”,看看是否有任何效果。您的应用应该绝不写入程序文件或其任何子文件。您可能需要考虑使用 IsolatedStorage。
【解决方案2】:

如果不是 Oded 的答案,那么问题可能是 exe 文件的位置。如果它是从网络卷运行的,它的权限会更低。

您应该研究强名称密钥,使用它们对您的应用程序进行签名,并与您的网络管理员合作以“信任”由该强名称密钥签名的程序集。

参考:

http://msdn.microsoft.com/en-us/library/h4fa028b(v=vs.80).aspx

另外 - 如果您使用的是 Vista 或 Windows 7,除非您以管理员身份运行,否则您的应用将无法在 Program Files 目录中写入/创建任何内容。

【讨论】:

  • 完美的男人,它是一种魅力。我不明白我做了什么,但我已经创建了这个密钥并且效果很好。顺便说一句,谢谢;)
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 2011-05-31
  • 2013-09-04
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多