Depois de horas trabalhando nisso, descobri que as permissões do Registro não importam quando se trata de scripts CGI, mesmo com Todos tendo Acesso total IIS ainda bloqueia isso. A única maneira que um aplicativo da Web pode acessar o registro é executando como um usuário normal, em vez de como IUSR .
Eu escrevi um script em lote que atribui um nome de usuário / senha a diretórios virtuais, cria um diretório virtual para meu aplicativo da web e permite que o aplicativo seja executado:
@echo off
set /p id="Username: "
set /p pass="Password: "
%windir%\system32\inetsrv\appcmd set site "Default Web Site" -virtualDirectoryDefaults.userName:%id% -virtualDirectoryDefaults.password:%pass%
%windir%\system32\inetsrv\appcmd add vdir /app.name:"Default Web Site/" /path:/nodepoint /physicalPath:"%CD%"
%windir%\system32\inetsrv\appcmd set config -section:isapiCgiRestriction /+[path='%CD%\app.exe',allowed='true',description='Web App']
Espero que isso seja útil para os outros também.