How to make older Epson scanners work with Vista x64:
The techniques described so far work with 32-bit Vista, but not with Vista x64. Fortunately, someone figured out how to make it work with Vista x64 and posted the method and the driver for the Perfection 1200U over on PlanetAMD64.com. The technique can be adapted to other USB scanners as well.
Here's the link: PlanetAMD64 > Epson perfection 1240u driver
and here's a link to the driver file: http://www.box.net/shared/5rxsn87mqr
I wound up installing the latest Epson Twain driver for Vista x64 from the Epson site (epson12699.exe, I think it was for the Perfection 1670). To make it work with the Perfection 1200, I went into Device Manager, then "Update Driver Software" by right-clicking on the scanner and browsing to the ".inf" file I got when I unzipped the driver from the PlanetAMD64.
Following is the message that explains how he did it, I'm posting a copy here because it's valuable, hard-to-find information that I haven't seen anywhere else, and as more people use Vista x64 it could help them out. I wasn't able to upload the Perfection 1200 driver file (I think it's above the size limit for this board), so if you need it follow the above link or the link to PlanetAMD64 and download it from there (you'll have to register first).
I hope this helps.
Jan 25 2007, 03:10 PM
Hi. I've successfully hacked the x64 Perfection 2400 installer to produce a fully functional Perfection 1200 driver that installs under the correct name and the correct place in the registry, and supports the scanner's Start Button. I thought I'd share my method here in case it works for your scanner too.
On the Epson EU website there's a list of scanners for which Epson is providing x64 drivers. Choose one that sounds similar to your scanner, and download the x64 driver for that scanner from the Epson website.
Unzip the download. Some of the driver files are grouped by Locale ID under the LIB folder. Check out the .inf and .sif files for your locale. The number in the filename is the Epson Scanner (ES) number, and you can find out which scanner an ES number represents by looking in the [Strings] section of a .inf file. Choose the ES number that represents the most similar scanner to yours. The files with this number are the ones that you're going to modify.
The most important thing to do is change the USB Product ID (PID) in the info files to the PID of your scanner. (You can find your scanner's PID by looking in the .inf file from its 32-bit Windows XP driver.) The PID must be replaced throughout each .inf and .sif file bearing the appropriate ES number. For example, I replaced the Perfection 2400's PID of 011B with the Perfection 1200's PID of 0104 in every .inf and .sif file bearing the Perfection 2400's ES number (which is 27).
You should now have an installer that works for your scanner but recognises it as a different scanner. If you want your scanner to show up under the correct name, then you've got more work to do.
One of the cabinet (.cab) files in the root folder is specific to your scanner. You should be able to tell which one from its name. You need to search for and replace the name of the scanner, not only in the .inf and .sif files, but also in the .hrd, .idx and .icm files inside your scanner's cabinet file.
Changing these files is tricky. First of all, you need to extract them from the cabinet file. Unlike the .inf and .sif files, these files are binaries, so care must be taken in editing them. (I'd be wary of changing the length of the scanner's name.) Some of the embedded text strings use single-byte character encoding, but some use double-byte character encoding, which makes it difficult to spot every instance of the name you're looking to replace.
After you've edited the files, you must put them back into a cabinet file of the same name. I did this using the MakeCAB tool from Microsoft's Cabinet SDK. In order to do this I had to create a directive (.ddf) file for MakeCAB as described in the MakeCAB User's Guide:
.Set InfFileName=Per1200.inf;delete this file
.Set RptFileName=Per1200.rpt;delete this file
; Cabinet contents, in order:
If you did all that correctly, you should now have an x64 driver that installs your scanner under the correct name. I actually went further than that, but it isn't necessary to do so:
I changed the ES number from 27 (Perfection 2400) to 07 (Perfection 1200) in the names of the .inf, .sif, .hrd and .idx files, and throughout the .inf, .sif, .idx, .icm and Setup.ini files. This ensures that the scanner is installed in the proper location in the registry.
I changed the names of the .icm, .ds and .cab files to reflect the name of my scanner, e.g. from Per2400.ds to Per1200.ds. Corresponding changes must be made inside the .hrd, .inf and .sif files.
I deleted the .inf, .sif and .cab files for other models of scanner, and removed their ES numbers from the [Support] section of Setup.ini.
I edited the .inf files to match the capabilities of my scanner. (For example, I removed references to buttons that my scanner doesn't possess, and changed the resolution from 2400 to 1200.)
I have attached my Perfection 1200 driver: Click to view attachment
I wouldn't have been able to do this if not for the fact that Epson's code is actually quite well written.