2016-03-02 63 views
0

我想從我的應用程序文件夾複製驅動程序文件驅動程序文件夾在Windows 7但當我運行這個程序文件已經存在,如果我在驅動程序文件夾手動檢查已經發生的異常文件根本不存在。文件已經存在例外file.copy

Program.sDriverPath = Path.Combine(Program.sStartUpPath, @"windows7\amd64\MyDriver.sys"); 
string sPath = sDriverPath; 
string sDestPath = Path.Combine(Environment.ExpandEnvironmentVariables(@"%windir%\system32"), @"drivers\MyDriver.sys"); 
MessageBox.Show("Source " + sDriverPath); 
File.Copy(sDriverPath, sDestPath); 
+0

'File.Copy(sDriverPath,sDestPath,真);'添加第三個重載指定要覆蓋目標文件。 – Equalsk

+0

CopyFile(sDriverPath,sDestPath,true);我曾嘗試但仍然不能正常工作 –

+0

你在用什麼? 32或64位? – Pikoh

回答

0

如果要覆蓋你需要使用the overload which has a boolean parameter現有文件:

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

overwrite指定true

現在很奇怪,你說文件不存在目標在所有 - 我認爲它必須做的,你沒有在正確的地方尋找。

嘗試在撥打File.Copy()之前立即在代碼中設置斷點並檢查sDestPath參數。

我懷疑是正在發生的事情是,File System Redirector被悄悄重定向你的應用到不同的文件夾中。

嘗試檢查該文件夾,而不是%windir%\SysWOW64

最後,注意過程的用戶必須以管理員身份運行將文件寫入到該位置。

+0

它是否在重載中,還是隻是一個默認值爲false的參數? –

+0

@JohnDemetriou它是一個重載 – Sakura

+0

@Sakura是啊審查MSDN文檔後,我看到它:)但爲什麼?如果它是一個默認值,它會更有意義嗎? –

0

謝謝@Matthew Watson我找到了解決方案。 FSRedirector正在將system32文件夾重定向到SysWow64文件夾。進入syswow64文件夾,然後進入驅動器文件夾,您將在那裏找到您的文件。

相關問題