我是C#的新手,但我想我在Directory.CreateDirectory中使用了一个简单的命令, 虽然我只是在自己的电脑上建造,但一切都很好。但是当我发布它并在其他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);
}
}
答案 0 :(得分:3)
此异常通常意味着程序运行的帐户(默认情况下是登录用户的帐户)没有正确的权限来创建命名目录。
MSDN对Directory.CreateDirectory
的文档中的UnauthorizedAccessException
说了一遍:
来电者没有所需的权限。
为帐户授予正确的权限,一切都会正常。
答案 1 :(得分:1)
如果不是Oded的答案,那么问题可能是exe文件的位置。如果它是从网络卷运行的,则其权限将会降低。
您应该查看强名称密钥,使用它们签署您的应用程序,并与网络管理员一起“信任”由该强名称密钥签名的程序集。
参考:
http://msdn.microsoft.com/en-us/library/h4fa028b(v=vs.80).aspx
此外 - 如果您使用的是Vista或Windows 7,除非您以管理员身份运行,否则您的应用将无法在Program Files目录中编写/创建任何内容。