У меня есть приложение, которое подключается к BigQuery, используя несколько кредитов из файла .json. Поскольку это приложение в конечном итоге будет находиться в Pivotal Cloud Foundry, и его нужно будет установить в качестве переменной среды, предоставляемой пользователем, я использовал шифрование base64 для кодирования содержимого файла .json в ключ base64.

Идея заключается в том, что я могу затем использовать ключ в качестве значения переменной среды, чтобы можно было извлекать всю информацию о подключении BigQuery API из файла .json в одну переменную среды - используя ключ base64, вместо того, чтобы иметь много переменных пары ключ = значение для выполнения. этот.

Примечание. Ключ base64 содержит 3165 символов, включая символы новой строки.

Для справки краткий фрагмент ключа base64:

nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE\
p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09\
1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz\

Я знаю, что это может быть установлено в macOS как системная переменная (я видел это, и приложение устанавливает соединения и работает правильно), но я не могу сделать это в Windows 10.

Мне известно об ограничении максимальной длины системных переменных в Windows, но я не нашел решения, позволяющего установить его, используя "GOOGLE_JSON_B64" в качестве имени переменной среды и затем ключ 3165 в качестве значения переменной среды.

У кого-нибудь есть обходной путь?

Любое понимание будет с благодарностью.

1 ответ1

0

Документация Microsoft гласит, что переменная окружения в Windows ограничена только 32 767 символами (ссылка). Здесь не сказано, как создать очень длинную переменную.

Проблема здесь в том, что инструменты, предоставляемые Windows, имеют свои ограничения:

Команда set и команда setx усекают значения до 1023 символов.

Можно установить переменные среды непосредственно в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment , но использование regedit для этого не удастся, поскольку вводимые строки с клавиатуры ограничены 2047 символами.

Насколько я вижу, единственный оставшийся вариант - написать небольшую программу, которая обновляет реестр напрямую. Используемая функция Windows API - SetEnvironmentVariable, документация которой гласит:

Максимальный размер пользовательской переменной среды составляет 32 767 символов.

Можно надеяться, что это, по крайней мере, правильно. Здесь вы можете столкнуться с максимальной длиной строки, принятой компилятором, но в программе вы можете создавать такую длинную строку поэтапно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .