ClamAV for Win32 ---------------- --- News --- Starting from version 0.98 the windows version of ClamAV requires all the input to be UTF-8 encoded. This affects: - the API, notably the cl_scanfile() function - clamd socket input, e.g. the commands SCAN, CONTSCAN, MUTLISCAN, etc. - clamd socket output, i.e replies to the above queries For legacy reasons ANSI (i.e. CP_ACP) input will still be accepted and processed as before, but with two important remarks: First, socket replies to ANSI queries will still be UTF-8 encoded. Second, ANSI sequences which are also valid UTF-8 sequences will be handled as UTF-8. As a side note, console output (stdin and stderr) will always be OEM encoded, even when redirected to a file. --- Requirements --- To build the source code you will need: - Git for windows with a git "shell" - Microsoft Visual Studio 2010 SP1: the express version builds the 32bit target just fine but it requires a decent amount of fiddling in order to compile the 64bit target; this configuration is therefore not supported. To run the binaries at least Windows XP is required. --- Getting the code --- The win32 source code is merged in the ClamAV repository and is available via git. Clone the repository with: git clone git://git.clamav.net/git/clamav-devel See http://www.clamav.net/download/sources for more info. --- Code configuration --- After downloading the source code, minimal configuration is required: just run the win32/configure.bat script *from within the git shell*. Skip this step if you are building from an official release tarball. --- Compilation --- Open win32/ClamAV.sln in Visual Studio and build all. The output directory for the binaries is either /win32/(Win32|x64)/Debug or /win32/(Win32|x64)/Release depending on the configuration you pick. Note: at the time of writing Batch Build is broken in VS10: https://connect.microsoft.com/VisualStudio/feedback/details/556158 Use MSBuild instead. --- Special notes --- The ClamAV tools in win32 are the same as in unix, so refer to their respective manpage for general usage. The major differences are listed below: - Config files path search order: 1- The content of the registry key "HKEY_LOCAL_MACHINE/Software/ClamAV/ConfDir" 2- The directory where libclamav.dll is located 3- "C:\ClamAV" - Database files path search order: 1- The content of the registry key "HKEY_LOCAL_MACHINE/Software/ClamAV/DataDir" 2- The directory "database" inside the directory where libclamav.dll is located 3- "C:\ClamAV\db" - Globbing Since the windows command prompt doesn't take care of wildcard expansion, minimal emulation of unix glob() is performed internally. It supports "*" and "?" only. - File paths Please always use the backslash as the path separator. SMB Network shares and UNC paths are supported. - Debug builds Malloc in debug (as opposed to release) mode fails after allocating some 90k chunks; such builds won't be able to handle large databases. Just do yourself a favour and always build in release mode. --- Special thanks --- Special thanks to Gianluigi Tiesi and Mark Pizzolato for their valuable help in coding and testing.