Мы работаем над реализацией процедуры сканирования файлов, загружаемых в нашу систему, — это веб-приложение C#, в котором мы использовали подключаемый модуль nClam для обмена данными с Сервер ClamAV. В действительно простой настройке (скопировано из справки nClam) это выглядит так:
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 самостоятельно с этим именем файла? - person Patrick Huizinga   schedule 19.04.2017