2011-12-30 4 views
0

Windowsシステムのプロパティ|環境変数には、変数"AppStatus=status1"があります。OSに定義されている元の変数値を取得するAPIはありますか?

MyApp.exeという名前のexeがあります。実装では、変数をコードで変更します。

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

は、使用API​​ char * pStatus = getenv("AppStatus");場合、返される値は"status2"です。

私が得たいのは、プロセスブロックにないOS("AppStatus=status1")で定義されている元の値です。これを実装するには、レジストリキーを問い合わせることができます。

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

しかし、それをサポートするAPIがあればよいはずです。誰かがそれを知っていますか?

+0

WinAPI(またはWindows)で質問にタグを付ける必要があります。回答はオペレーティングシステム固有のものです(実際には、Linux上では質問はおそらく意味がありません)。あなたの質問は、C++よりもWindowsに関連しています。 –

+0

実装を変更できますか? 'AppStatus'の値をプロセス開始時に別々に保存するだけではどうですか? – vstm

+0

興味深い情報[ここ](http://stackoverflow.com/questions/631664/accessing-environment-variables-in-c)(dupではなく、Win32関数へのポインタと 'getenv'とネイティブWin32の同等の違い、 .Netを使用している場合に必要なものを実行する.Net関数) – Mat

答えて

0

GetEnvironmentVariable()と電話してください。 putenv()によって修正されたCRT状態ではなく、Windowsによって維持されるプロセス状態で動作します。

+0

このAPIを試しました。 getenvと同じ値を返します。これは「status2」です。ここmsdnからhttp://msdn.microsoft.com/en-us/library/ms683188%28VS.85%29.aspx。呼び出し元プロセスの環境ブロックから指定された変数の内容を取得します。 – Jeffrey

+0

万が一/ MDとリンクしていますか? CRTに依存しているようです。 – MSalters

関連する問題