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;否则为假。

如另一个答案中所述,您可能没有适当的权限,您可以尝试通过以下方式检查:

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 回答