0

システムのパス環境変数に新しいディレクトリを追加するプログラムを c++ で作成しています。関数でディレクトリが正常に追加されましたRegSetValueEx()が、すべてのプロセスに変更が反映されていません。

私は以下のように別々に試しBroadcastSystemMessage()て機能しましたSendMessageTimeout()

LPCTSTR keyPath = TEXT("System\\CurrentControlSet\\Control\\Session Manager\\Environment");
        
BroadcastSystemMessage(0, 0, WM_SETTINGCHANGE, 0, (LPARAM)keyPath); 

LPCTSTR keyPath = TEXT("System\\CurrentControlSet\\Control\\Session Manager\\Environment");

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)keyPath, SMTO_BLOCK, 100, NULL); 

どちらも機能しませんが、システムを再起動すると変更が反映されます。

私が欲しいもの

ログアウトせずにすべてのプロセスに変更を反映させたいのですが、数日前に、環境パスを追加し、すべてのプロセスの環境変数を更新するソフトウェア (Composer https://getcomposer.org ) をインストールすることができます。システムの再起動。

ここに私がすでに見たいくつかの便利なリンクがあります

4

1 に答える 1