2011-07-03 11 views
0
string windowsDirectory = Environment.GetEnvironmentVariable("ProgramFiles"); 
string mydirecoty = windowsDirectory + "\\" + "NetServices\\"; 

if (!Directory.Exists(mydirecoty)) 
    { 
    Directory.CreateDirectory(mydirecoty); //Access to the path 'C:\Program Files (x86)\NetServices\' is denied. 
    } 

管理者アカウントなしで.netアプリケーションを実行すると例外がスローされます。一方、私が他のディレクトリにC:\ドライブを作成しようとすると、D:\のように正常に動作します。C#を使用してディレクトリを作成する際にアクセスが拒否されました

Program Files/ Windowsフォルダにディレクトリを作成したいという解決策は何ですか?

+1

これはWebベースのアプリケーション、Windowsサービス、実行可能なタスクまたはスケジュールされたタスクですか? – Kane

+0

あなたの質問には、例外の詳細を編集してください。あなたのコードでは、コードをtry/catchする必要があります。 Windows 7で動作していますか? 100%あなたは管理者であり、UACは無効になっていますか?一般に、アプリケーションをインストールしない限り、その場所にサブフォルダを作成しないでください。通常はインストーラによって実行されます。 –

+0

アプリケーションを強制的に管理者として実行することができます:http://stackoverflow.com/questions/2818179/how-to-force-c-app-to-run-as-administrator-on-windows-7 –

答えて

5

C:\program filesフォルダは、VistaおよびWindows 7(およびWindows Server 2008/2008 R2)の(設計による)であるです。通常のユーザーアカウントにはディレクトリを作成する権限がありません。システムフォルダです。

adminのいずれかを実行する必要があります。保護されたシステムフォルダでもディレクトリを作成する権限があります。または、保護されたシステムフォルダ以外のディレクトリを作成します。 2番目のオプションは、推奨され、好ましいオプションです。

0

Windows Vista/7では、ユーザー特権を昇格させる必要があります。 管理者として実行すると問題は解決します。

0

ユーザーがアプリケーションを実行する場合は、ユーザーのアプリケーションデータフォルダまたは一時フォルダに書き込みます。あなたのアプリはProgram Filesディレクトリにインストールし、おそらくWindowsディレクトリのいくつかのファイルを使用する必要がありますが、どちらの場所にも書き込む必要はありません。 ユーザーのアプリケーションdaaフォルダを環境変数から簡単に取得できます。

0

これをWebアプリケーションから実行している場合は、アプリケーションプールユーザーがそのフォルダのntfsアクセス許可を持っていることを確認してください。

0

Windows XP以上のオペレーティングシステムを使用している場合、管理者権限でアプリケーションをAVIIしない限り、読み取りと書き込みが可能なためC:\ PrpgramFilesにアクセスできません。

bye

関連する問題