如何将文件复制到Win7上的Program Files(x86)? (c#或bash)

时间:2012-09-07 18:34:17

标签: c# bash

你能帮我个忙吗? 我的桌面上的文件夹中有一个.dll文件 我需要将其复制到c:\ Program Files(86)\ Program Folder \目录
我已经尝试过“File.Copy”,但我无法弄清楚如何使用文件夹名称中的空格。试图将完整地址放在引号中 - 例如“\”我的文件夹\ myfile.dll \“”但它也不起作用。
试图写一个bash文件 - 但无法弄清楚如何通过C#运行它。
请帮忙。任何解决方案都表示赞赏 如果可能的话,我还需要“强制覆盖”。

2 个答案:

答案 0 :(得分: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); 根据{{​​3}}:

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
}

答案 1 :(得分:1)

路径中的空间没问题。

但是你考虑过你需要管理员权限来复制文件吗? 这意味着您需要在应用程序上使用manifest file

另外请发布实际的异常和代码。我们只能猜测