Location: ProgrammingUnlimited.Net :: Software :: FileVerifier++

What is it?

FileVerifier++ is a Windows application for verifying the integrity of files. FileVerifier supports various algorithms by means of dynamically loadable hash libraries. It uses the Windows API and doesn't have any dependencies other than what comes with Windows (WinFVC excluded). Permanent installation is not required and may be burned to a CD or used from a flash drive.

System Requirements

In brief, FileVerifier++ should run without problems on the following operating systems.

The current version of FileVerifier++ as of this writing is known to execute on Windows XP and Windows 2003 Server (through testing). It should also operate on Windows 2000. It might execute on Windows NT 4.0 (some upgrades may be neccessary.)

The current binary build supports wide characters internally (2-bytes) and utilizes the Unicode versions of the Windows API calls. Thus, this version will not directly execute on Windows 9x as it does not support these functions. I did create an ANSI build of FileVerifier (ANSI here is Microsoft's terminology, not mine), and that build does appear to work on Windows 98, though on my test system (VMWare Server), it appears to hang upon termination. The same "ANSI" build executes on other operating systems without issues. Upon further debugging, it appears to be hanging upon returning to a 16-bit device-driver call, so it may be something to do with VMWare's drivers being installed in the VM. More to come on this one.

Hash Algorithms Supported

The hash algorithms currently supported (at the time of this writing) are:

Current Features
FileVerifier++ Shell Extension

The FileVerifier++ Shell Extension is a useful addition to FileVerifier++. The extension adds a context-menu handler to Windows Explorer that allows one to hash a set of files and/or directories. The menu allows one to choose between the default hash algorithm and each installed algorithm.

The extension is distributed with the MSI package as well as the binary zip distribution (though in this case, it must be manually registered.)

FileVerifier++ Shell Extension

Command Line Version

FileVerifier++ now comes with a non-interactive, command-line hashing utility called FVC. FVC supports all of the hash algorithms and input/output formats that the FileVerifier++ GUI application supports, as well as simple recursive hashing with standard wildcards. FVC also has the ability to verify multiple hash files, even recursively.

The command line version is available starting with version v0.4.7.4812.

FileVerifier++ Command Line

Some Features To Come (Hopefully)

New Screenshots:

Screen Shot 1 Screen Shot 2 Screen Shot 2 Screen Shot 2

Older Screenshots:

Screen Shot 3 Screen Shot 4 Screen Shot 5 Screen Shot 6

License Terms

GNU General Public Licence v2


Current Stable Version (v0.6.6.6050): [x86_64 MSI] [x86 MSI] [x86_64 ZIP] [x86 ZIP] [source ZIP] [x86_64 MD5] [x86_64 SHA1] [x86_64 FVA] [x86 MD5] [x86 SHA1] [x86 FVA]

OpenPGP compatible public key for validating signatures: Here

Other files including previous releases: Available on SourceForge.net .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....

Project Hosting By:
SourceForge.net Logo

Revision history:

Changes with v0.6.3.5830:
	* A situation where the program would crash upon recalculating or
	  verifying a list where a significant number of files are skipped
	  initially has been fixed.
	* A situation where the program will crash upon writing lists with entries
	  with dates prior to 1/1/1970 has been fixed.  Any dates prior to this
	  will be set to 1/1/1970.  This restriction will be lifted in future
	* A workaround for a condition causing a brief delay in the program exit
	  on certain systems has been applied.

Changes with v0.6.2.5822:
	* None.  Release v0.6.2.5821 was not compiled with optimizations.  It
	  should have been!

Changes with v0.6.2.5821:
	* Added option that allows one to skip recalculating items that have 
	  file sizes and modification times that match what is currently present
	  on disk.
	* Added option that specifies whether or not hash files should be verified
	  automatically upon opening.
	* Improved performance of several algorithms, especially concerning the 
	  SHA-2 family of algorithms.

Changes with v0.6.1.5643:
	* Fixed issue with file/directory column not displaying the correct text
	  when an item only contains a filename.
	* Fixed an issue where the file information display was erroneously
	  marking the entry's attributes as mismatching when no file attributes
	  were set.

Changes with v0.6.0.5600:
	* Two "virtual" columns have been added to the view, called File and
	  Directory.  These columns are not displayed by default, but may be
	  enabled instead of the Path column to simulate the view provided by
	  other programs.
	* The button that closes the message log and file information side panes
	  has been replaced with one that actually has an "X".

Changes with v0.5.8.5527:
	* Customization of displayed columns and the column order is now possible.
	* An issue where FV++ crashes when clicking in the tagging column in an
	  empty buffer has been resolved.
	* A related issue where FV++ mistakenly counts clicks outside the actual
	  range of items in the list view within the tagging column only as valid
	  tagging requests has been resolved.
	* A memory leak associated with directory recursion has been fixed.  This
	  should have a major impact on memory usage after the application is done
	  processing directories.
	* Some improvements have been made as to how listview selection is
	  handled, which improves performance on very large data sets in terms of
	* WinFVC, an experimental frontend to FVC, has been added to the project.
	  The front-end is used from the shell extension to implement a few new
	  commands for verifying hash files and creating new ones.  It is intended
	  to supplement the shell extension with quicker verification of multiple
	  files.  WinFVC requires the Microsoft .NET framework 2.0.
	* FVC now supports combining recursive parameters with non-recursive ones
	  in the same invocation.  Instead of passing the -r option, one may
	  prefix parameters with **\ or **/ to indicate that the parameter should
	  be processed recursively.
	* The MD5SUM format reader will now allow lines that do not contain a '*'
	  preceding the file name.  These lines are not processed any differently,
	  however, as FV++ always hashes in binary mode.

Changes with v0.5.7.5491:
	* The configuration backend is no longer the Windows Registry, but is now
	  a textual configuration file.  The location of the configuration file is
	  either <FVDIR>\fv.cfg or %APPDATA%\FileVerifier++\fv.cfg, where if a
	  file named fv.cfg is found in the application directory, it is used,
	  otherwise a User specific configuration file is created in
	  %APPDATA%\FileVerifier++\fv.cfg.  Portable installs should always
	  include a fv.cfg file, even if it is blank, if one does not want to
	  leave the configuration on the system in which the program is running.
	* MD5SUM (and related file formats) now support the extended format used
	  by Slavasoft FSUM.  This allows storing the algorithm name for a hash if
	  that algorithm name is not associated with the file extension (storing
	  SHA1 hashes in a file ending in .MD5).  
	* An algorithm name compatibility configuration is now used when writing
	  hash files.  This is of significance when algorithm names are different
	  between applications (such as RMD160 vs. RIPEMD160 vs. RIPEMD-160).
	  While the program does not currently give any provisions for editing
	  this configuration, it is stored in algmap.cfg in the program directory
	  and can be edited if necessary.
	* Processing/checking/verifying progress dialogs now display information
	  about actual byte counts, as well as time elapsed and estimated time
	  remaining.  Total percent complete is now based upon byte counts, as
	  opposed to file counts.
	* Prior versions will not handle file sizes within FVA/FVB/CSV file
	  formats that are greater than or equal to 4GiB.  In the past, files
	  larger than this could be processed, though if results were saved in a
	  file, such results would not read back properly.  This has been fixed.
	* Running the application on both files and directories at the same time
	  from the shell extension (and by drag and drop) resulted in files not
	  being processed.  This has been fixed.

Changes with v0.5.6.5404:
	* An issue in FVC where nonexistent files are provided on the command line
	  are not reported as being nonexistent has been fixed.
	* A preliminary CHM help document has been added, and is displayable from
	  the Help menu.

Changes with v0.5.5.5381:
	* The ability to display hashes using different encoding methods other
	  than hexadecimal has been added.  This encoding information is embedded
	  within the FVX (FVA/FVB) file format, however, the actual encoding used
	  within the FVX format is still hexadecimal, to preserve compatibility
	  with older versions of FV++.  This may change later on.
	* Much work has been done to nearly eliminate all flicker in the
	  application.  This has been an issue for quite some time.  This should
	  work whether or not Windows XP visual styles are enabled.
	* The string dialog now is resizable and allows one to select an output
	  encoding.  It also supports multiline text (which will use CR-LF
	  endings, naturally).
	* The file comment dialog now behaves properly with <Enter>, as
	  previously, Ctrl-<Enter> needed to be used to enter multiline comments.
	* v0.5.2.5113 introduced a change that was supposed to display the
	  date/time in the current locale, however, it was broken with the switch
	  from STLPort to libstdc++.  This is now fixed.
	* There is now support for BSD CKSUM formatted files.  There is no need to
	  explicitly state the format when opening a file from the shell, though
	  when loading a file using the Load Results action, it will be necessary
	  to select the correct format unless one uses the "Auto Detect (*.*)"
	  selection in the load results dialog.
	* Several algorithms have had their names changed.  For example, SHA-1 is
	  now SHA1, SHA-256 is now SHA256, etc.  This will not break existing FVA
	  files though, as each hash module now specified a list of alias names.
	  This has been done so that the program writes BSD CKSUM files with
	  algorithm names that match the ones used in BSD CKSUM and related

Changes with v0.5.2.5114:
	* No changes but a version increase and a rebuild with a different
	  compiler, as v0.5.2.5113 tends to crash when terminating threads.

Changes with v0.5.2.5113:
	* v0.5.1 did not display comments in the message log, unlike previous
	  versions supporting the message log.  This has been fixed.
	* When a parsing error occurs, the program no longer outputs the message
	  relating to successful loading of the file.
	* When a parsing error occurs, there is now a limit on the number of
	  errors that will be displayed (for now, it is 10).  If any records could
	  be salvaged, those ones will be loaded.
	* Parse errors in CSV files now correctly show the line number of the
	  erroneous line.
	* Comments for FVA/FVB files are now displayed in the message log.
	* Modification times are now displayed with respect to the system locale.
	  However, text written to FVA and CSV files will always be in the format
	  MM-DD-YYYY HH:MM:SS in order to make files compatible between different
	* MD5SUM file format now supports only two comment delimiters, ; and #.
	  This change was made in order to prevent a case in which the entire file
	  would be dumped to the message log.
	* Added support for user defined file comments.  New options allow one to
	  override the default comment with a user defined one, and allows one to
	  be prompted for a comment each time a file is saved.  
	* The binary distributions are now compiled with GCC 4.3.0 (previously,
	  GCC 3.4.5).  Also, the program is no longer dependent on STLport, due to
	  using an updated libstdc++ compilation that has adequate support for
	  wchar_t to the point where boost wregex will build with it.
	* FVC now supports the -d option, allowing one to specify a custom comment
	  when creating hash files.
	* FVC now may build on non-windows operating systems.  It has not been
	  well tested on other operating systems such as Linux, but it appears to
	  operate the way it should for the most part.

Changes with v0.5.1.5014:
	* A bug was discovered with pattern matching in the Advanced Processing
	  dialog.  To make pattern matching simpler, the pattern is treated more
	  like a Unix pattern, in that * and ?  will match a period (.).  The main
	  implication is that * should be used in place of *.*, but most other
	  patterns like *.exe should be the same between the two schemes.
	* When launching FV++ from the shell by opening a registered hash file,
	  the file format type was not being correctly retained, which caused the
	  save operation to save an existing file in the MD5SUMS format,
	  irrespective of the already existing format.  This has been corrected.
	* It is now possible to use the clipboard copy operation with the message
	  log window.  Previously, attempts to do so resulted in invoking the hash
	  entry clipboard copy operation as opposed to copying the text from the
	  text box.  The Ctrl-C accelerator now also operates based on what
	  control has the keyboard's focus.  Paste and cut will always apply to
	  the hash entry buffer though.

Changes with v0.5.0.5002:
	* Message log is now based on the Rich Edit control that comes with
	  Windows.  This gives provisions for formatting based upon message
	* Changed column ordering so that hash, hash algorithm, and status are
	  right next to the file name.  This makes it so that these items are
	  always in view, as these are the items of most importance (especially
	  when the other ones aren't present).
	* Added more file extensions to the load/save/import dialogs.  These are
	  based on the MD5SUM format, so it's not a major addition.
	* The aforementioned extensions are registered with the MSI installer now
	  as well (plus the *.SHA* ones).

Changes with v0.4.8.4943:
	* Added advanced processing operation.  Currently, this allows one to add
	  files to the buffer from multiple directories, with the option of adding
	  only files that match a list of patterns or a regular expression.  These
	  advanced processing lists may be saved for reuse at a later time.
	* Added capability to load simple line feed delimited text files
	  containing file names.  This is useful for interoperability purposes,
	  where one wishes to choose a set of files to hash via.  external means.
	  The *.LST/*.TXT formats are available in the Load, Save, and Import

Changes with v0.4.7.4812:
	* Added preliminary version of fvc (command line file hashing utility).
	* A small script called fvc-batch allows creation of hash files within
	  each subdirectory.
	* Fixed a division-by-zero error that occurs when reading files less than
	  100 bytes in size (hash files, not files being hashed).

Changes with v0.4.6.4742:
	* Added File Information sidebar.

Changes with v0.4.5.4674:
	* Fixed issue with compatibility of comments in MD5SUM files created by
	  other programs.

Changes with v0.4.1.4517:
	* Added support for WHIRLPOOL and WHIRLPOOL-T (for backwards compatibility
	  purposes) algorithms.
	* Added support for EDONKEY2K algorithm.

Changes with v0.4.0.4488:
	* Progress dialogs for verification and calculation now display the number
	  of files being processed, how many have been processed, as well as the
	  percentage complete in numeric form.
	* Progress dialogs also show the percent complete in the title bar,
	  allowing for one to monitor progress without having to have the window
	* Fixed an issue that causes the program to crash when tagging entries by
	* Initial directories for load and save common dialogs are now set with
	  reference to entries added to the buffer.  It may be desireable to do
	  some more work in this area, but this should be a big improvement over
	  the old behavior (where this aspect was ignored completely).
	* When one cancels the Processing Files dialog, the user is prompted as to
	  whether or not to save the partially obtained results, as opposed to
	  simply discarding it.
	* In the previous release, the default algorithm behavior for SFV and MD5
	  files was lost.  It has been restored again with this release.
	* There are now options that allow one to preserve the line ending modes
	  and path seperator characters for existing files.  This means that if
	  one's program is configured to write Windows-style line endings, any
	  file opened with Unix-style line endings will be rewritten with
	  Unix-style line endings, provided that this option is selected.
	* About dialog has been revamped and contains more information about the
	* The previous build was accidentally compiled for athlon-xp processors
	  (i.e. using the -march option).

Changes with v0.3.1.4419:
	* Clipboard operations cut, copy, and paste are now available for
	  tranfering entries from one instance of the program to another.
	* An import operation has been added, which allows one to add the contents
	  of a file containing hashes to the current working buffer (as opposed to
	  loading it exclusively).
	* Various other internal changes have been made.

Changes with v0.3.0.4225:
	* An issue with the shell extension launching the application even when
	  the handler does not actually add it's context menu items to a context
	  menu has been fixed.

Changes with v0.3.0.4213:
	* Options dialog has been redone.  Colors for each item state are now
	* Most recently used list has been added.
	* Select All, Select None, and Invert Selection menu commands have been
	  added as there are now operations that look at selections as opposed to
	  tagging (for convenience).  
	* Fixed some GDI object leaks.

Changes with v0.2.1.3885:
	* Support for SFV file format.
	* Can automatically strip pathnames down to relative paths, being relative
	  to the location of the checksum/hash result file.
	* Delayed calculation.  Normally when files and directories are added to
	  the buffer, their hashes are computed immediately.  With delayed
	  calculation, one can add files to the buffer, and compute their hashes
	  in two distinct steps.  This allows one to manipulate the list before
	  actually calculating, allowing one to pick and choose exactly what files
	  should be processed.
	* Internal support for Structured Exception Handling.  Faulty hash modules
	  should not crash the application (not that this was ever an issue, but
	  something that I've been wanting to support).
	* Improved CSV file parser.
	* Various other miscellaneous modifications.

Changes with v0.2.0.3656:
	* Files were being created with the read-only file system attribute.  The
	  behavior appeared to be somewhat random (at least it had the potential
	  to be).  This has been fixed.
	* The buffer that holds the main list view state information was not being
	  marked as dirty when files were dropped from the shell or when
	  FileVerifier was invoked using the shell extension.  This also has been

Changes wtih v0.2.0.3631:
	* Fixed a reported issue with file writing and UTF-8 encoding (files were
	  not being completely written).

Changes with v0.2.0.3621:
	* Removed duplicate entry for JamCRC in the CRC module.
	* Made several improvements to the Makefile (doesn't concern binaries).
	* Files aren't truncated when overwitten, causing corruption if a file is
	  saved on top of another that is larger than the new data.  Appeared in
	  v0.2.0 when Unicode support was added.

Changes with v0.2.0.3569:
	* Shell extension was not properly inserting menu items in the context
	  menu, causing duplicate menu entries to appear.  Fixed.
	* Shell extension was not handling cases where not enough menu identifiers
	  were available.  Menu now has an option to allow FileVerifier to prompt
	  for an algorithm when resources are limited.  Fixed.
	* Shell extension had a directory handle resource leak.  Fixed.
	* Additional variants of CRC32 are now supported.

Changes with v0.2.0.3533:
	* FileVerifier++ now comes with a shell extension.  It can be manually
	  installed and removed with the regsvr32 utility, in the form of
	  "regsvr32 X:\path\to\fvdir\fvshell.dll" To remove it, use the /u switch
	  of the regsvr32 utility.
	* The program is now packaged with an MSI installer.  This is the
	  recommended way of using FileVerifier++ if one wants to use the shell
	  extension.  Otherwise, one may download the version without the
	  installer and use it as usual.

Changes with v0.2.0.3367:
	* Fixed a few issues with XML file generation.
	* Fixed an issue with the file-information dialog not always displaying on
	  double-click.  This probably appeared with the addition of owner-draw
	* Made some performance adjustments.  The hashing speed should be up to
	  two times faster on large files.
	* All modification times are now stored in UTC, and are also currently
	  displayed in UTC.  This may change in the future.

Changes with v0.2.0:
	* Added support for FVA (XML) and FVB (Compressed XML) formats.  
	* Added support for Unicode.  Currently in Unicode builds, all files are
	  treated as being encoded in UTF-8, except in FVA and FVB formats, where
	  the encoding supplied in the XML processing instruction is honored.  The
	  following encodings are supported in that case:
		  * UTF-8
		  * UTF-16
		  * ISO-8859-1
		  * US-ASCII
	* Added option for registering and unregistering FVA and FVB file types
	  with Windows Explorer.
	* Added support for Windows XP visual styles.
	* Some buttons in the application are now owner-draw, in order to support
	  icon buttons.
	* Toolbar icons have been improved.
	* Fixed a bug where check boxes status was not initialized after clearing
	  the file list, resulting in strange behavior after using the buffer
	  after loading an existing file.
	* Disabled digital signature verification of hash modules.  This was an
	  experimental feature in the previous version, and has been removed as it
	  is too difficult to maintain.  A way to create custom builds with a user
	  provided public key may appear in the future.
	* Changed the standard library in the build from libstdc++ to STLport, as
	  such was required to have Boost support wide character regular
	* Command line parameter now accepts files of any type.  File type is
	  determined by extension.  (i.e. *.FVA -> FVA file, *.FVB -> FVB, *.CSV
	  -> CSV, Anything else is assumed to be a text file in md5sum(3) format).
	* Added context menu to main list view.  Context menu actions act upon
	  selected items, whereas main menu actions act on tagged items, or
	  possibly all items.

Changes with v0.1.99.2164:
	* Fixed a bug in the CRC module that appeared in v0.1.99.2163

Changes with v0.1.99.2163:
	* Fixed a bug with the initializing of the Microsoft Crypto API.

Changes with v0.1.99.2161:
	* Added digital signature support for verifying the contents of the hash
	  libraries themselves.

Changes with v0.1.99.2142:
	* Added a feature that allows one to recalculate the entries that are
	  present in the buffer.

Changes with v0.1.99.2122:
	* Added support for the Windows clipboard (allows for copying and pasting
	  hashes into other applications).

Changes with v0.1.99.2097:
	* Initial public release.
...... ...... ...... ...... ...... ...... ...... ...... ....... ....... ...... ...... ....... ....... ...... ...... ...... ...... ...... ...... ...... ...... ....... ....... ...... ...... ....... ....... ...... ...... ...... ...... ...... ...... ...... ...... ....... ....... ...... ...... ....... .......