7

そのため、私は何度も答えを探し、アクセス許可をいじって無駄にしましたが、このコードでは、指定されたパスにファイルをダウンロードすることはできません。

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 を使用していることにも注意してください。

4

4 に答える 4

11

こんにちは、上記のコードをローカルで試してみたところ、同じエラー「アクセスが拒否されました」が表示されました。

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")
于 2013-01-29T23:16:23.680 に答える
2

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

于 2012-04-29T03:41:01.297 に答える
1

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

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

于 2012-04-29T03:52:48.447 に答える
0

ダウンロードする前に setaccesscontrol を使用して失敗したルールを設定していない場合は、以下のコードを使用してフォルダーへの書き込み権限があるかどうかを確認できます。

 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;
    }
于 2012-04-29T04:23:45.577 に答える