|
|
|
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.
|
|
|
|
|