diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
new file mode 100644
index 36d7200..d95d50c
*** a/doc/src/sgml/ref/pg_ctl-ref.sgml
--- b/doc/src/sgml/ref/pg_ctl-ref.sgml
*************** PostgreSQL documentation
*** 117,122 ****
--- 117,123 ----
     </arg>
     <arg>-w</arg>
     <arg>-t <replaceable>seconds</replaceable></arg>
+    <arg>-s</arg>
     <arg>-o <replaceable>options</replaceable></arg>
    </cmdsynopsis>
  
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
new file mode 100644
index 98bbaef..fa346ae
*** a/src/bin/pg_ctl/pg_ctl.c
--- b/src/bin/pg_ctl/pg_ctl.c
*************** write_eventlog(int level, const char *li
*** 163,168 ****
--- 163,171 ----
  {
  	static HANDLE evtHandle = INVALID_HANDLE_VALUE;
  
+ 	if (silent_mode && level == EVENTLOG_INFORMATION_TYPE)
+ 		return;
+ 
  	if (evtHandle == INVALID_HANDLE_VALUE)
  	{
  		evtHandle = RegisterEventSource(NULL, "PostgreSQL");
*************** pgwin32_CommandLine(bool registration)
*** 1225,1230 ****
--- 1228,1236 ----
  	if (registration && wait_seconds != DEFAULT_WAIT)
  		/* concatenate */
  		sprintf(cmdLine + strlen(cmdLine), " -t %d", wait_seconds);
+ 
+ 	if (registration && silent_mode)
+ 		strcat(cmdLine, " -s");
  
  	if (post_opts)
  	{
