我正在处理WM6 +的应用程序,并且我正在尝试覆盖现有文件:
File.Copy(src, dest, true);
但是我收到了这个错误:
System.UnauthorizedAccessException: UnauthorizedAccessException
at System.IO.__Error.WinIOError()
at System.IO.File.InternalCopy()
at System.IO.File.Copy()
然后我尝试更改目标文件上的文件属性以便能够覆盖它:
System.IO.File.SetAttributes(dest, FileAttributes.Normal);
但是当我尝试编译时,我会得到这个:
Error 1 'System.IO.File' does not contain a definition for 'SetAttributes' L:\Admin\Applications_Source_Code\CommonTime_AEP_Config_Source\AEP_WM6 - Production Code\AEP_WM6\Form1.cs 133 26 AEP_WM6
为什么SetAttributes不存在?!
这是我试图覆盖的文件(不是系统文件,只是在路径相关的情况下显示):
@"\Program Files\Common Files\Trimble\GeoData\PFToolkit.csw"
这似乎完成了诀窍(感谢TheGreatCO的评论)指点我:Remove readonly in Compact Framework
FileInfo fileInfo = new FileInfo(dest);
FileAttributes attributes = fileInfo.Attributes; if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
// set the attributes to nonreadonly
fileInfo.Attributes &= ~FileAttributes.ReadOnly;
}
答案 0 :(得分:0)
此问题的解决方案是使用OpenNETCF框架。例如;
OpenNETCF.IO.FileHelper.SetAttributes("filePath ise here", FileAttributes.Normal);