2012-04-30 33 views
0

指定した作業場所から対象ファイルを削除するようにしました。私はその後、私自身のワークステーションと別のテストマシンの両方でTEMP.TXTファイル\ \ Tempに作成UNCパスからファイルを削除できません

string strTarget = @"\\" + textBox1.Text + @"\C$\Temp\temp.txt"; 

      try 
      { 
       File.Delete(strTarget); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Failure to delete: " + ex.Message); 
      } 

:私はテストのために次のコードを使用してソフトウェアを実行しているユーザーは、ターゲット・マシン上で管理者になります。私は両方のマシンの管理者であり、手動で問題のUNCパスを介してファイルにアクセスして削除することができます。コードデバッガを実行すると、例外はスローされませんが、ファイルは削除されません。私はこれが失敗することが起こっていないことを理解できません。

私が確認できるものや追加する必要のあるコードはありますか?私は他の質問で検索しましたが、私はまだ答えを見つけることはできませんでした。

答えて

1

Vista/7で動作している場合は、エスカレートされていない特典の下でプログラムが実行されている可能性があります。明示的に管理者としてプログラムを実行するか、プロジェクトのマニフェストファイルで指定してください:

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <!-- 
     UAC Manifest Options 
     If you want to change the Windows User Account Control level replace the 
     requestedExecutionLevel node with one of the following. 

    <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
    <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

    If you want to utilize File and Registry Virtualization for backward 
    compatibility then delete the requestedExecutionLevel node. 
--> 
    <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 
    </requestedPrivileges> 
+0

ファイルを管理者として実行しましたが、変更はありませんでした。私のADアカウントは両方のマシンの管理者です。私はイベントビューアをチェックしましたが、私のワークステーションのログイン/ログアウトの外にクレジットイベントは表示されません。私はこのアプリを使用していることに関連するイベントを見なければならないでしょうか? – ChargerIIC

+0

私は単純な一行プログラム 'File.Delete(@" \\ foo \ c $ \ temp \ temp.txt ");'(fooは私のマシン名で置き換えられます)をテストし、ac:\ temp \ temp.txtファイル私は問題なく作成しました。あなたのテキストボックスの入力は正しいですか? Microsoftによると、ファイルが見つからない場合、File.Delete()は例外をスローしません。 – itsme86

+0

もう少しテストした後、ターゲット名を小文字として使用すると、ネットワークパスに対して「アクセス拒否」エラーが返されるようです。私のユーザーアカウントにはパスに対する管理者権限があるので、プログラムにこれらの権限を渡す方法を理解する必要があると思いますか? – ChargerIIC

関連する問題