我想調用函數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/zh-cn/ library/tehxacec.aspx)而不是'getenv'。 –
你知道'getenv'是否成功了嗎? –
@Adam Rosenfield:[「由於編譯器無法轉換參數,讓我們給它一些幫助,然後在前面粘貼一個轉換,在那裏關閉編譯器,這些編譯器都很笨。」](http:/ /blogs.msdn.com/b/oldnewthing/archive/2011/05/06/10161590.aspx) –