Поле 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;