1
我們一直在爲正在上傳到我們系統的文件實施病毒掃描程序 - 這是一個C#web應用程序,我們使用nClam插件與之交談一個ClamAV server。在一個非常基本的設置(copied from the nClam help),它看起來像這樣使用nClam和ClamAV在C#中使用日語字符病毒掃描文件
string filePath = "C:\\test\\jp TEST 昨夜のコンサート.txt";
var clam = new ClamClient("localhost", 3310);
var scanResult = clam.ScanFileOnServer(filePath); //any file you would like!
Console.WriteLine("Japan test");
switch (scanResult.Result)
{
case ClamScanResults.Clean:
Console.WriteLine("The file is clean!");
break;
case ClamScanResults.VirusDetected:
Console.WriteLine("Virus Found!");
Console.WriteLine("Virus name: {0}", scanResult.InfectedFiles.First().VirusName);
break;
case ClamScanResults.Error:
Console.WriteLine("Woah an error occured! Error: {0}", scanResult.RawResult);
break;
}
現在,當我嘗試運行此,我總是會得到一個錯誤,從掃描後面 - 文件本身只是用一些隨機的文本文件我得到的錯誤是「沒有這樣的文件或目錄錯誤」
如果我運行ClamAV控制檯命令來掃描文件夾中的文件,它似乎工作正常。我認爲這是一個解碼路徑的問題,但我已經嘗試過各種編碼方案,但似乎並不奏效。
內nClam方法,還有一些解析文件路徑爲命令ClamAV的服務器
var commandText = String.Format("z{0}\0", command);
var commandBytes = Encoding.UTF8.GetBytes(commandText);
難道這是影響日文字符的代碼?
如果您嘗試從程序中迭代目錄中的文件名,會發生什麼情況?你看到他們期望的文件嗎?如果是這樣,'String.Equals'是否與你的觀察一致?你能用這個文件名自己做一個File.ReadAllBytes嗎? –
@PatrickHuizinga標準的C#應用程序沒有問題看到文件和讀取字節。只有當我傳遞到clam應用程序的路徑時,它纔會導致問題。 – loxdog