Я пытаюсь вызвать функцию 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.
Спасибо!
(LPTSTR)
— если компилятор выдает вам сообщение об ошибке без приведения, то вставка приведения, чтобы закрыть компилятор, неправильно. Компилятор пытается вам что-то сказать. В этом случае вы компилируете приложение Unicode и пытаетесь передать строку ANSI, когда ожидается строка Unicode — используйте_tgetenv
вместоgetenv
. - person Adam Rosenfield   schedule 02.07.2011getenv
? - person Billy ONeal   schedule 02.07.2011