2011-10-24 32 views
1

私は、同様の質問に対するいくつかの回答の周りにスカウトをしてきましたが、本当に私をあまり助けてくれませんでした。appdataフォルダへの書き込み - 権限の問題?

私はいくつかのリソースを埋め込んだその中にアプリを、持っています。起動時にappdataフォルダ内にリソースが存在するかどうかをチェックし、埋め込まれていない場合はテンプレートファイルをappdataフォルダにコピーしてからappdataフォルダのファイルを作業コピーとして使用します。

は、私は次のようにとりわけAPPDATAとリソースのサブフォルダを返すヘルパークラスを持っている:

class Folders 
{ 
    static public String GetUserFolder() 
    { 
     return Application.LocalUserAppDataPath; 
    } 

    static public String GetResourcesFolder() 
    { 
     // If the resources folder does not exist then create it 
     String userFolder = GetUserFolder(); 
     String resourcesFolder = userFolder + "\\Resources"; 

     if (!Directory.Exists(resourcesFolder)) 
     { 
      Directory.CreateDirectory(resourcesFolder); 
     } 
     return resourcesFolder; 
    } 

    ... 

だから私のコードは、それが必要な場合は、プロセス内のフォルダを作成するパスを(返すGetResourcesFolderメソッドを呼び出します

 String filename = Helpers.IO.Folders.GetResourcesFolder() + "\\data.dat"; 
     FileStream outFile = System.IO.File.OpenWrite(filename); 

だから私は場面を設定していると、このコードは、私が持っていたすべてのマシンに取り組んでいる。)にファイルが存在し、それはのようなものを使用して、それへの書き込みしようとしていない場合かどうかを確認します開発事務所しかし、いくつかのオフサイトの同僚は、彼らのマシン(それぞれの場合はXPマシン)から「クラッシュする」と訴えているが、それ以外の有用な情報はたくさんありません。私はそれが問題なく働いていたオフィスにXPマシンを持っています。

しばらく前に「アーカイブ」されたいくつかの本当に古いのdevのマシンを掘り後、私は2つのXP(SP2)もマシンのクラッシュを持っていることができました。どちらの場合も、クラッシュは書き込み権限に関連しているように見え、 "Run As ..."を使ってアプリケーションを実行すると問題が解決され、正しく実行されます。しかし、いったんappが正常に実行されると、appdataフォルダから作成したファイル/フォルダを削除しても、アプリケーションがクラッシュすることはなくなります。ただし、権限を昇格しなくても、その後の実行では正常に作成されます。

私が持っている問題は、私はもはや私には利用可能なのdevのマシン上でクラッシュを繰り返すことはできませんし、私はどこ私ができる状態に戻ってマシンを置くことについて移動する方法がわからないということです。

問題を引き起こしている可能性のあることや、マシンを「処女」の状態に戻してクラッシュを繰り返して、それを追跡する手助けをすることができる人はいますか?

+0

問題が発生したマシン上の別の場所にexeファイルをコピーして実行すると、問題が繰り返されることがあります(この問題はUnhanded SecurityExceptionです)。しかし、デバッグコードを実行するとVisual Studio内から問題は発生しません - Visual Studioはコードを昇格された権限で実行しますか? –

+0

'Path.Combine(GetUserFolder()、Resources"); ' – aligray

答えて

3

行動の一つのコースは、XPの仮想マシンを作成することです。テストのためにインストールする前に、マシンの状態を保存することができます。あなたのインストールの後、もう一度前の状態に戻り、再度テストしてください。無料の仮想マシンでいくつかのベンダーがあります

http://www.microsoft.com/windows/virtual-pc/

https://www.virtualbox.org/

としてあまりにも関連する問題自体が、私はテスト目的のために、仮想マシン上でVSをインストールするより良い方法を知りません。問題をreporducingためのエリックのVMソリューションへ

+0

を使用することをお勧めします。私のMacでバーチャルボックスを実行しているので、問題を繰り返すことができるかどうか試してみます。 –

+0

VMのデバッグ/テストに関しては、リモートデバッガを使用する必要があります。 VMが同じネットワークの一部でない場合、いくつかのアクセス許可の問題がある可能性があります(http://www.wictorwilen.se/Post/How-to-get-Remote-Debugging-work-properly.aspxを参照) – Reddog

0

+1。

アクセス許可の問題を追跡するために、ProcMon(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)を使用することを検討してください.-プロセスによって行われたファイル/レジストリアクセスについて、あなたが今までに望んでいたことをすべて表示します。私はあなたのプログラムの設定をフィルタリングして何が起こっているのかを知るためには、プログラムがうまく動作するマシンで何回か試してみることをおすすめします。

関連する問題