関数CreateProcessAsUserを呼び出そうとしています。定数文字列を渡すことは問題ありません。char * getenv(const char name)を使用して環境変数を取得しようとすると、問題が発生します。
以下を使用すると、notepad.exeが実行されます。
CreateProcessAsUser(hTokenDup, _T("c:\\windows\\notepad.exe"),
_T("c:\\windows\\notepad.exe"), NULL, NULL, FALSE,
dwCreationFlag, pEnvironment, NULL, &si, &pi);
ただし、以下を使用すると何も実行されません。
CreateProcessAsUser(hTokenDup, _T("MyAppName"),
(LPTSTR)getenv("MYENVVAR"), NULL, NULL, FALSE,
dwCreationFlag, pEnvironment, NULL, &si, &pi);
getenvと(LPTSTR)を正しく指定しましたか?
c:\\ windows \\ notepad.exeとc:\ windows\notepad.exeを含むユーザー環境変数とシステム環境変数を使用してみました。
ありがとう!