青山です。

> ruby -retc -e 'p Etc.sysconfdir' が nil になってるのでしょうね。
> mingwのetc.soが本来どんな値を返すのか分かりませんが、
> 自分でビルドされているとのことなので、何かビルドミスかもしれません。

Etc.sysconfdirが返す値は、

>ruby -retc -e 'p Etc.sysconfdir'
"C:/ProgramData"

です。

一方、下記のようなCGIスクリプトを動かすと、「nil」が返ってきます。

#-*- coding: utf-8 -*-
require 'cgi'
require 'etc'
cgi = CGI.new
print(cgi.header({'type' => 'text/html'}))
print("<html><body>#{CGI.escapeHTML(Etc.sysconfdir.inspect)}</body></html>")

Etc.sysconfdirの挙動がコマンドラインからとCGIとでは違うようです。