2011-07-01 8 views
2

私は最近、今私の.NETアプリケーションをCにログファイルの書き込み失敗のWindows 7に移動した:UnauthorizedAccessException Cにテキストファイルを書き込みます。Windows 7上の

\私のTraceListenerは例外をスローしています。

A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll 

どうすればよいですか?私はスタジオからアプリケーションを実行しているので、すべての権利を継承しなければならないと思います。私は自分のPCの管理者です。

答えて

3

UACが有効になっている場合、昇格モードでプログラムを起動して管理者権限を有効にしない限り、管理者であってもC:\にファイルを書き込むことはできません。

ファイルを実際にC:のルートに配置しないでください。サブディレクトリを作成し、管理者グループではなく自分のアカウントにアクセス権を与えてください。ファイルをC:\にして昇格させたくない場合は、Windowsエクスプローラーを使用して、自分自身(自分のアカウントではなく、管理者グループ)の書き込みアクセスをC:\に許可することができます。

+0

UACとは何ですか?説明してください。 –

+1

UACは、管理者権限を無効にすることによって機能します。悪質なプログラムが機密のシステムファイルを変更するのを防ぐセキュリティ対策です。 Windows 7のデフォルト設定では、Windows 7が有効になっています。詳細:http://en.wikipedia.org/wiki/User_Account_Control –

+0

UACが何であるかわからない場合は、プログラミングについてもう少し学ぶ必要があります。 – alexandrudicu

0

おそらくUACが有効になっている可能性があります。

あなたのapp.configに、プロセスで昇格された権限を使用するように指定する必要があります。

デフォルトの生成されたapp.configはその情報を持っています。

+0

ああ、その設定はどこにありますか? –

+0

は、app.configではなくマニフェストにあります。しかし、アプリケーションを実行するだけでCのルートにログインできるように昇格された –

2

プログラムは必要な権限で実行する必要があります。管理者権限を持つユーザーのみが、システムドライブなどの「特別な」フォルダに書き込むことができます。そのため、アプリケーションは最初は高い特権で実行する必要があります。

コードのセキュリティアクセス許可については、hereおよびhereを参照してください。

+0

これを修正することは、間違ったアプローチです。他の場所にログを記録する方が良い解決策です。 –

関連する問題