Thread: BUG #3530: Can't start as service if sb created 'c:\program' file

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.

Re: BUG #3530: Can't start as service if sb created 'c:\program' file

From
"Hiroshi Saito"
Date:
Hi.

Any problems are not reproduced in pginstaller.
http://winpg.jp/~saito/pg_bug/pgsql_regstry.png
Therefore, it must take a special situation into consideration
to directions. Is your problem original structure's?

Regards,
Hiroshi Saito

From: <irek_m@poczta.fm>

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