The OpenSSL_ProgramData define is ignored if OpenSSL resource files are linked, it's an alternative option.
You can not use OpenSSL_AutoLoad_CA_Bundle if you want to change where OpenSSL is loaded, it's too late to change anything in code.
You can set GSSL_PUBLIC_DIR to your own directory before OpenSSL is loaded (instead of c:\programdata) but sub-directorties will still be created in your new directory, each OpenSSL release needs a unique directory. Note I've not tested this!
Use of the existing GSSL_SignTest_Check public variable is unchanged, if set true before loading OpenSSL, ICS checks the DLLs are digitally signed, which includes corruption checks. It does not check the signing certificate at the moment, too much extra code. This does not work yet for OpenSSL_AutoLoad_CA_Bundle, too late, need to think about that.
Angus