2011-12-30 7 views
0

В Свойствах системы Windows | Переменные среды, есть переменная "AppStatus=status1".Есть ли API для получения исходных значений переменных, определенных в ОС

Существует exe с именем MyApp.exe. В реализации он изменяет переменную с кодом.

int ret = putenv("AppStatus=status2"); // Change the environment variable. 

Если использование API char * pStatus = getenv("AppStatus");, возвращаемое значение "status2".

Что я хочу получить, это исходное значение, определенное в ОС ("AppStatus=status1"), а не в блоке процесса. Для реализации этого я могу запросить ключ реестра

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment \ Path.

Но должно быть лучше, если есть API, который его поддерживает. Кто-нибудь знает об этом?

+0

Вы должны пометить свой вопрос с помощью WinAPI (или Windows), и ответ будет специфичным для операционной системы (и на самом деле ваш вопрос, вероятно, не имеет смысла в Linux). Ваш вопрос больше связан с Windows, чем с C++. –

+0

Можете ли вы изменить реализацию? Почему бы просто не сохранить значение «AppStatus» при запуске процесса отдельно? – vstm

+0

Интересная информация [здесь] (http://stackoverflow.com/questions/631664/accessing-environment-variables-in-c) (не дублирует, а указывает на функции Win32 и различия между 'getenv' и родным эквивалентом Win32, и .Net-функция, которая делает то, что вы хотите, если используете .Net) – Mat

ответ

0

Просто позвоните GetEnvironmentVariable(). Он работает в состоянии процесса, поддерживаемом Windows, а не в состоянии CRT, измененном putenv().

+0

Я пробовал этот API. Он возвращает то же значение, что и getenv. Это «статус2». Из msdn здесь http://msdn.microsoft.com/en-us/library/ms683188%28VS.85%29.aspx. Он извлекает содержимое указанной переменной из блока среды вызывающего процесса. – Jeffrey

+0

Вы случайно связываетесь с/MD? Кажется, CRT-зависим. – MSalters

 Смежные вопросы

  • Нет связанных вопросов^_^