To print from Windows 2000/XP when the printer is attached to a computer running Linux.
1) Download CUPS for Windows
2) Share the drivers using SAMBA but do not use printers or print$ to do this. Use a normal directory.
3) Make sure the printer is shared in CUPS
4) In Windows, go to the control panel and add a new printer.
5) In the add new printer dialog box, select the URL radio button.
6) In the text box type http://[IP_adress_of_CUPS_server]:631/printers/[printer_name]
7) When the driver dialog box shows up, select have disk.
8) Browse for CUPS for Windows driver that is shared through SAMBA.
9) Continue through a few messages about it is not digitally signed by Microsoft.
10) Change the properties of the printer so Windows does not spool it. Let CUPS spool, so your pages does not mix with other print jobs from other users.
In step 6, the IP address to the CUPS server can be changed to a name. You will have to edit the host file in Windows before adding the Linux printer.
I can never setup SAMBA to add the CUPS for Windows drivers to its database. People said that cupsaddsmb is the easiest to use. That is loads of bull. The stupid utility cupsaddsmb uses rpcclient and it said it should work, but it does not. I tried several times with the correct syntax, but the utility does not work at all. DAM SAMBA developers using proprietary database files that can not be edited easily.
My way is the easiest and it can be setup for multiple printers very easily with out the need for SAMBA. Also it is possible to print securely over the internet using SSL or https. Printing directly to CUPS is less over head and safer.