私のOSはWin7 x64です。 ComHost.exeとClientApp.exeの2つのexeがあります。COMホストプロセスが親プロセスから環境変数を継承しないようにする方法
ComHost.exeはスタンドアロンのexeファイルであり、out-of-process COMのCOMホストです。
ClientApp.exeは、CoCreateInstance(...)を呼び出してCOMインスタンスを作成します。 COMインスタンスを作成すると、プロセスComHost.exeが起動します。
Windows環境変数には、変数 "AppStatus = status1"があります。 ClientApp.exe、コードの実装では
がComHost.exeの実装ではその
int ret = putenv("AppStatus=status2"); // Change the environment variable.
// do something
CoCreateInstance(...); // Start ComHost.exe
のようですが、私はコード
char * pStatus = getenv("AppStatus");
ケース1とviriable値を取得します:ComHost.exeをダブルクリックして起動すると、pStatusの値は "status1"になります。
ケース2:ClientApp.exeでComHost.exeを起動すると、pStatusの値は "status2"になります。 親のプロセスClientApp.exeの環境変数を継承します。
私の質問は:
私はComHost.exeはいつも親プロセスから継承された値ではなくOSによって定義された変数の値を読み取りたいです。つまり、ケース2では、値 "status1"を取得したいと考えています。出来ますか?
可能です。ステータスを伝える環境変数を使用して、間違った方向にいると思います。まず、すべてのアプリケーションをステータスで汚染しています。そして、ホストプロセスが実行されたらステータスを更新することはできません。 –
変数としてAppStatusを取るのは、そのことを理解しやすくするための例です。 – Jeffrey
私の指摘は依然として立っています。環境変数を使用する可能性が最も高いのは解決策ではありません。非常に頻繁に、ここに掲示された質問は簡単で難しい(または不可能な)部分に分割されています。後者は尋ねられますが、問題の全体を見ると、ソリューションの最初の部分が実際に間違った方法であることがわかります。 –