Utilisez le register paramètre pour le pg_ctl programme.
Le répertoire de données ne doit pas être stocké dans Program Files , l'emplacement de %ProgramData% est par ex. un bon choix.
pg_ctl.exe register -N PostgreSQL -U some_windows_username -P windows_password -D "%ProgramData%/db_data" ...
Dans les nouvelles versions de Postgres, un compte Windows séparé n'est plus nécessaire, donc ce qui suit est également suffisant
pg_ctl.exe register -N PostgreSQL -D "%ProgramData%/db_data" ...
Les détails sont dans le manuel :https://www.postgresql.org/docs/current/static/app-pg-ctl.html
Vous devez vous assurer que le répertoire D:/Program Files/PostgreSQL/9.0.4/db_data a les privilèges corrects pour l'utilisateur Windows que vous spécifiez avec le -U drapeau.
Au fait :c'est une mauvaise idée de stocker les données du programme dans Program Files . Vous devez déplacer le répertoire de données quelque part en dehors de Program Files parce que Program Files est généralement très limité pour les utilisateurs réguliers - avec une très bonne raison.