2016-04-08 19 views
0

私は入力を受け取り、.csvファイルに変換しようとしています。次に、そのフォルダのディレクトリを作成し、そのファイルをディレクトリに保存します。コードを実行すると、ディレクトリとファイルを作成できます。しかし、これは私がボタンをクリックした後に起こるはずです。ボタンをクリックすると例外がスローされます。私はWPFとC#でコーディングを使用しています。この例外の原因は何ですか?ここでUnauthorizedAccessExceptionが処理されていません

は、例外が非常に明確であるスニペット

private void updateBANKEevent(object sender, RoutedEventArgs e) 
    { 

     //Convert input to CSV format 
     string userInput = tellerID.Text + "," + vaultSerial.Text + "," + QR.Text; 
     var bnkDir = @"C:\Program Files\Bank_Data"; 


     //generate headers for CSV file 
     if (!Directory.Exists(bnkDir)) 
     { 
      string bnkHeader = "tellerID" + "," + "Vault Serial Number" + "," + "QR Code" + Environment.NewLine; 
      Directory.CreateDirectory(bnkDir); <--Exception is thrown here 
      File.WriteAllText(System.IO.Path.Combine(bnkDir,"Bank_Data.csv"), bnkHeader + userInput); 

     } 

     // Append new input to existing file 
     File.AppendAllText(System.IO.Path.Combine(bnkDir),userInput + Environment.NewLine); 
     } 
+1

あなたのアプリが昇格していない場合、プログラムファイルにフォルダを作成することはできません。代わりにユーザフォルダにフォルダを作成する – rene

+2

Windows Vista以降、アプリケーションはデフォルトでは、C:\ Program FilesとC:\ Program Files(x86)への書き込みアクセス権が与えられていない。ファイルを書き込む正しい場所は '%APPDATA%\ ' –

+0

です。ユーザーにはC:\ Program Filesフォルダが許可されていません。他の権限のあるフォルダに書き込むか、C:\ Program Filesにアクセスする権限を与えられたユーザーとして実行する必要があります。 – Nemo

答えて

0

です。指定されたディレクトリを作成する権限がありません。

フォルダが「C:¥Program Files¥Bank_Data」であるとすれば、通常のユーザーはファイルやディレクトリを作成する権限を持ちませんが、管理者ユーザーはおそらくそうです。

すべてのユーザーがのユーザーにデータを保存する権利があるフォルダを選択する必要があります。デフォルトでは%APPDATA%\<your app>になります。

+0

あなたの説明をありがとう! フォルダとファイルを作成していますが、更新ボタンをクリックしても例外がスローされます。 – fuser

+0

@fuser同じ例外の場合、ユーザーは操作を実行するために必要な権限を持っていません。 – ChrisF

+0

AppendAllText関数の行にあるようです。私はそれにディレクトリの名前を渡しています、そして、それは同じ例外です。 – fuser

関連する問題