2012-03-30 12 views
0

ファイルの解析(主にXMLですが、カスタムファイルの種類もあります)を扱ういくつかのコードで作業しています。私は、ファイルを読み込んだり、アクセスしたりするときに、何かがうまくいかないチャンスを得るために、解析コードをいくつか試してみることにしました。これらの例外は呼び出し元のオブジェクト/メソッドに戻されます。ここでUACによるファイルとユーザーの制限の書き込み

は例です:

/* main.cs */ 
public void LoadSomeFile (string _fullPathToFile) 
{ 
    //create an instance of my fileLoader object 
    //which is just a wrapper for the in-built 
    //c# and .net methods for loading a file 
    FileLoader myFileLoader = new FileLoader(); 

    try 
    { 
     //pass the fileLoader the location the file 
     //to be loaded 
     myfileLoader.LoadAFile(_directoryAndFileName); 
    } 
    catch (ParsingException parseEx) 
    { 
     //code to create or append to debug log file 
    } 

    //once the file has been loaded and parsed, 
    //or if it fails, close the fileLoader 
    myFileLoader.Close(); 
} 

/* ParsingException class */ 
public class ParsingException : System.Exception 
{ 
    public ParsingException() 
    { 
    } 

    public ParsingException(string message, Exception innerException) 
    { 
    } 

    public ParsingException(string message) 
     : base(message) 
    { 
    } 


/* in FileLoader.cs */ 
public void LoadAFile(string _fullPathToFile) 
{ 
    try 
    { 
     /* load the file from disk */ 
    } 
    catch (FileLoadException fileLoadEx) 
    { 
     throw new ParsingException("Could not load file.\nDetails: " 
      + fileLoadEx.Message); 
    } 
    catch (FileNotFoundexception fileNotFoundEx) 
    { 
     throw new ParsingException("Could not find file.\nDetails: " 
      + fileNotFoundEx.Message); 
    } 
    catch (NullReferenceException nullRefEx) 
    { 
     throw new ParsingException("Could not load data from file.\nDetails: " 
      + nullRefEx.Message); 
    } 
} 

私は、ログファイル(ファイル名と形式に構文解析の例外(とそのことについてはスローされた他の例外は)今のところ問題はありません出力に探しています、私はdebug.txtという名前の単純なテキストファイルを考えています)。しかし、このソフトウェアはWindowsの異なるバージョン(またはMonoなどのツール/ VMを介して異なる環境)にロードされる可能性があるので、私はこのデバッグファイルをどこに置くことができるか心配しています。

私はUACをオフにしてWindows 7 Professionalを構築していますが、このソフトウェアをUACがオンになっているマシン(XP、Vistaまたは7のいずれか)にロードすると、このデバッグファイルのディレクトリ。

OSのバージョンとUACの設定に関係なく、私のソフトウェアが確実に出力できる特定のディレクトリがありますか?私は、ソフトウェアのスタートアップパスがok(Program Files \ My Project \またはProgram Files(x86)\ My Project \など)でなければならないと考えていましたが、これにアクセスできない場合がありますか? (スタートアップディレクトリが読み込み専用になっている場合を除いて)もちろん、このようなことを証明するディレクトリがありますか?私は、ユーザが簡単にナビゲートできるディレクトリを見つけることを望んでいる。

答えて

1

プログラムファイルのUACがオンになっていません。

Environment.SpecialFoldersをご覧ください。 LocalApplicationDataは合理的な選択です

標準的なトリックはあなたの会社の下にあなたの会社のためのフォルダを作成し、あなたのアプリのそれの下に1つのフォルダを作成してそこにファイルを入れます。

既知のロケーションとUACは影響を与えません。トニーによって提案されたものを除く

+0

を利用することができます。私たちはこれを実装しましたが、1つのインスタンスでは、問題が発生しました。当社のソリューションはクライアントのマシンにインストールされています。クライアントはAdminとしてソフトウェアを実行していますが、UACは無効になっていますが、「System.UnauthorizedAccessException:パスへのアクセスが拒否されました」と表示されます。しかし、クライアントがUACを再び有効にした場合、UnathorizesAccessExceptionは取得されません。どのような考えや提案ですか?彼らのITポリシーは、私たちが制御できず、明らかに知識がないものです。 –

+0

UACがオンになっているときに仮想ストアに入れていると思っています。管理者として実行することについて話しているときは、あなたとそのユーザーが同じページにいることを確認してください。 –

+0

"私はこのPCの管理者であっても自分のアクセス権と関係があると思いますが、私はWindowsでUACをオフにしようとしましたが、役に立たない"その後、テストの一環として以前にUACを再度有効にした後、「管理者として実行する」チェックボックスをオフにしました(このチェックボックスを再度オンにすると、にはこの場所に書き込むための重要なアクセス権が与えられます) " –

関連する問題