start_info.lpDesktop - это объект LPWSTR, но он говорит, что это const wchat_t *? - PullRequest
0 голосов
/ 10 ноября 2018

Я полный нуб, использующий C ++, я просто хочу перекомпилировать эксплойт.

Я получил ошибку:

Вы не можете присвоить значение типа "const wchar_t *" сущности типа "LPWSTR"

The error

1 Ответ

0 голосов
/ 10 ноября 2018

Поле lpDesktop является LPWSTR (wchar_t*), а не LPCWSTR (const wchar_t *). Широкий строковый литерал - это const wchar_t[N] (где N - 16 в вашем примере), который уменьшается до const wchar_t *. Вы не можете назначить указатель на const-данные указателю на не-const-данные. Именно на это жалуется компилятор.

Чтобы присвоить строковый литерал lpDesktop, вам необходимо привести его:

start_info.lpDesktop = (LPWSTR) L"WinSta0\\Default";

Или лучше:

start_info.lpDesktop = const_cast<LPWSTR>(L"WinSta0\\Default");

В противном случае скопируйте данные в локальный неконстантный wchar_t[] буфер и используйте вместо этого:

WCHAR szDesktop[] = L"WinSta0\\Default";
start_info.lpDesktop = szDesktop;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...