CreateProcessAsUser関数を呼び出そうとしています。一定の文字列を渡しても問題ありません。 char * getenv(const char name)を使用して環境変数を取得しようとすると、問題が発生します。C++ LPTSTRの問題getenvでCreateProcessAsUserを呼び出す
私が以下を使用すると、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を含むユーザーおよびシステム環境変数を使用しようとしました。
ありがとうございます!
'(LPTSTR)'へのキャストを取り除く - コンパイラがキャストなしでエラーメッセージを表示した場合、コンパイラをシャットダウンするためのキャストを挿入することは**間違ったことです**。コンパイラはあなたに何かを伝えようとしています。その場合、Unicodeアプリケーションをコンパイルしていて、Unicode文字列が必要なときにANSI文字列を渡そうとしています。['_tgetenv'](http://msdn.microsoft.com/en-us/)ライブラリ/ tehxacec.aspx)を使用してください。 –
'getenv'が成功したかどうか知っていますか? –
@Adam Rosenfield:["コンパイラがパラメータを変換できなかったので、助けて前にキャストを貼り付けるとコンパイラがシャットダウンしました。 /blogs.msdn.com/b/oldnewthing/archive/2011/05/06/10161590.aspx) –