The following bug has been logged online:
Bug reference: 3530
Logged by:
Email address: irek_m@poczta.fm
PostgreSQL version: 8.1
Operating system: Windows XP
Description: Can't start as service if sb created 'c:\program' file
Details:
I've installed PostgreSQL in 'c:\program files'. Some buggy program created
file named 'c:\program', and what? PostgreSQL doesn't start!
This error is due to Windows's stupid rules of resolving executable names.
You've added registry entry ImagePath=c:\program files\Postgre
SQL\bin\pg_ctl.exe ...
Now Windows tries to execute c:\program, if not found - c:\program
files\Postgre, and so on, until reaches the end of string.
pg_ctl.exe when registering the service should quote this name:
ImagePath="c:\program files\Postgre SQL\bin\pg_ctl.exe".
But even this doesn't solve the problem, pg_ctl.exe starts postgres.exe, and
probably you haven't used quotations again in CreateProcess invocation. So
there are at least two bugs with lack of "..." in pg_ctl.exe.
If the server started not using net start, but manually (using postgres.exe
-D "..."), everything works ok, so postgres.exe probably doesn't have this
bug.