0

これについて手を貸してもらえますか?
デスクトップのフォルダーに.dllファイルがあります。
c:\Program Files(86)\Program Folder\ ディレクトリにコピーする必要があります
。すでに「File.Copy」を実行しようとしましたが、フォルダ名にスペースを使用して機能させる方法がわかりません。"\"my folder\myfile.dll\"" のように完全なアドレスを引用符で囲みましたが、うまくいきません。
bash ファイルを書き込もうとしましたが、C# で実行する方法がわかりません。
助けてください。どんな解決策でも大歓迎です。
可能であれば、「強制上書き」も必要です。

4

2 に答える 2

2

試す: File.Copy(@"c:\Program Files(86)\Program Folder\mydll.dll", @"C:\mydll.dll");

強制的に上書きするには、次を使用します。

File.Copy(@"c:\Program Files(86)\Program Folder\mydll.dll", @"C:\mydll.dll",true);MSDNのドキュメント に従って:

public static void Copy(
    string sourceFileName,
    string destFileName,
    bool overwrite
)

パラメーター

sourceFileName 型: System.String コピーするファイル。

destFileName 型: System.String 宛先ファイルの名前。これをディレクトリにすることはできません。

overwrite 型: System.Boolean 宛先ファイルを上書きできる場合は true。それ以外の場合は false。

別の回答で述べたように、適切な権限がない可能性があります。次の方法でこれを確認してください。

string directoryPath = @"c:\Program Files(86)\Program Folder";
bool isWriteAccess = false;
try {
    AuthorizationRuleCollection collection = Directory.GetAccessControl (directoryPath).GetAccessRules (true, true, typeof (System.Security.Principal.NTAccount));
    foreach (FileSystemAccessRule rule in collection) {
        if (rule.AccessControlType == AccessControlType.Allow) {
            isWriteAccess = true;
            break;
        }
    }
} catch (UnauthorizedAccessException ex) {
    isWriteAccess = false;
} catch (Exception ex) {
    isWriteAccess = false;
}
if (!isWriteAccess) //we cant write to location
{
    //handle notifications 
} else { //we can write to the location
}
于 2012-09-07T18:37:18.633 に答える
1

パスのスペースは問題ありません。

しかし、ファイルをコピーするには管理者権限が必要であることを考慮しましたか? つまり、アプリケーションにマニフェスト ファイルが必要です。

また、実際の例外とコードを投稿してください。Atm 推測することしかできません

于 2012-09-07T18:36:36.910 に答える