2012-04-29 49 views
7

私は答えを何度も探していて、何の助けも払っていませんでしたが、このコードでは指定されたパスにファイルをダウンロードできません。ファイルにアクセスすることができません - WebClient.DownloadFile

WebClient client = new WebClient(); 
client.DownLoadFile("http://dl.dropbox.com/u/(My account)/Installer.jar", @"c:\Games\Name\libs"); 
client.DownLoadFile("http://dl.dropbox.com/u/(My account)/Name.zip", @"c:\Games\Name"); 

いつも私に "c:\ Games \ Name \ libsのパスへのアクセスが拒否されました。"

また、Windows XP SP3を使用しています。

+0

Pleseにはタイトルに「C# - 」などのプレフィックスを付けないでください。それがタグのためのものです。 –

答えて

2

このアプリケーションには、おそらくそのフォルダに書き込む権限がありません。これがクライアントアプリケーションの場合は、管理者として実行してみてください。それ以外の場合は、「c:\ Games \ Name \ libs」のアクセス権を全員のフルコントロールに変更します。

+0

正しいですが、私は許可や何かを促す方法を知らないだけです。 また、私は自分のコンピュータの管理者です。だからちょっと変です。 それに加えて。フォルダの "読み取り専用"属性を無効にすることはできないようです。O_o – Fishrock123

+0

フォルダを右クリックし、[プロパティ]をクリックします。セキュリティタブを探します。 – tzerb

+0

勝利XP SP3はそのタブを持っていません...そして、私のプログラムを使用している人々がプロパティを介してそれを行う必要はありません。 > _ < – Fishrock123

1

アクセス権が拒否された場合は、管理者として実行してください。

正しく動作しない場合は、C:\Games\Name\libsというフォルダに移動し、右クリックして[プロパティ]に移動します。 [セキュリティ]タブを選択し、プログラムを実行するユーザーのグループの一番上のリストを選択します。 (Users (YourName-PC\Users)を使用してください)。 これを選択してリストの一番下にある[編集]をクリックし、下のリストでFull controlAllowの下に選択します。

0

あなたは

public static bool HaveWritePermissionsForFolder(string path) 
    { 
     var rules = Directory.GetAccessControl(Path.GetDirectoryName(Path.GetDirectoryName(path))).GetAccessRules(true, true, typeof(SecurityIdentifier)); 

     bool allowwrite = false; 
     bool denywrite = false; 
     foreach (FileSystemAccessRule rule in rules) 
     { 
      if (rule.AccessControlType == AccessControlType.Deny && 
       (rule.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData && 
       (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) 
       ) 
      { 
       denywrite = true; 
      } 
      if (rule.AccessControlType == AccessControlType.Allow && 
       (rule.FileSystemRights & FileSystemRights.WriteData) == FileSystemRights.WriteData && 
       (groups.Contains(rule.IdentityReference) || rule.IdentityReference.Value == sidCurrentUser) 
       ) 
      { 
       allowwrite = true; 
      } 
     } 


     if (allowwrite && !denywrite) 
      return true; 

     return false; 
    } 
+0

これでアクセス権を設定する必要があります。そんなこと知ってる。しかし、私はどのように把握することはできません。 – Fishrock123

+0

これを試してみましたかhttp://msdn.microsoft.com/en-us/library/system.io.directory.setaccesscontrol.aspx? –

+0

私はファイルの代わりにディレクトリのセキュリティを試していない、と思う。とにかく@ "MYDOMAIN \ MyAccount"のために置くべきものは何ですか? – Fishrock123

11

をダウンロードする前に、setaccesscontrolを使用して失敗したルールを設定していない場合はこんにちは、私はローカルに上記のコードを試してみましたが、同じエラー「アクセスを持って、あなたはフォルダに書き込み権限を持っているかどうかを確認するために、次のコードを使用することができます「拒否された:

WebClient myWebClient = new WebClient(); 
    myWebClient.DownloadFile("http://localhost:1929/2.png", @"C:\Z\) 

は、ディレクトリの末尾にファイル名を指定してみてください、ローカルに私はそれを実行した何の問題を保存しない:

WebClient myWebClient = new WebClient(); 
    myWebClient.DownloadFile("http://localhost:1929/2.png", @"C:\Z\FILENAME.jpg") 
+0

このように、ファイル拡張を追加した後 –

関連する問題