0

私は 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);
            }
        }
4

2 に答える 2

3

通常、この例外は、プログラムが実行されているアカウント (デフォルトではログインしているユーザーのアカウント) が、指定されたディレクトリを作成するための適切な権限を持っていないことを意味します。

MSDNUnauthorizedAccessExceptionのドキュメントには、次のように記載されていDirectory.CreateDirectoryます。

呼び出し元に必要な権限がありません。

アカウントに正しいアクセス許可を付与すると、すべてがうまくいきます。

于 2011-11-03T20:09:17.880 に答える
1

それが Oded の答えでない場合、問題は exe ファイルの場所である可能性があります。ネットワーク ボリュームから実行されている場合、そのアクセス許可は低くなります。

厳密な名前のキーを調べて、それらを使用してアプリケーションに署名し、ネットワーク管理者と協力して、その厳密な名前のキーによって署名されたアセンブリを "信頼" する必要があります。

参照:

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

また、Vista または Windows 7 を使用している場合、管理者として実行しない限り、アプリは Program Files ディレクトリに何も書き込み/作成できません。

于 2011-11-03T20:12:02.353 に答える