Po skompilowaniu i uruchomieniu programu dostaję błąd 1314 jak naprawić aby program uruchamiał z innego użytkownika?
#include <windows.h>
#include <stdio.h>
#include <userenv.h>
void DisplayError(LPWSTR pszAPI) {
LPVOID lpvMessageBuffer;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&lpvMessageBuffer, 0, NULL);
wprintf(L"ERROR: API = %s.\n", pszAPI);
wprintf(L" error code = %d.\n", GetLastError());
wprintf(L" message = %s.\n", (LPWSTR)lpvMessageBuffer);
LocalFree(lpvMessageBuffer);
ExitProcess(GetLastError());
}
int main() {
DWORD dwSize;
HANDLE hToken;
LPVOID lpvEnv;
PROCESS_INFORMATION pi = {0};
STARTUPINFO si = {0};
WCHAR szUserProfile[256] = L"";
si.cb = sizeof(STARTUPINFO);
LPCSTR user = "user", pass = "", cmd = "C:\\Windows\\notepad.exe";
//
// TO DO: change NULL to '.' to use local account database
//
if (!LogonUser((LPCSTR)user, ".", (LPCSTR)pass, LOGON32_LOGON_NEW_CREDENTIALS,
LOGON32_PROVIDER_DEFAULT, &hToken))
DisplayError((LPWSTR)"LogonUser");
if (!CreateEnvironmentBlock(&lpvEnv, hToken, TRUE))
DisplayError((LPWSTR)"CreateEnvironmentBlock");
dwSize = sizeof(szUserProfile)/sizeof(WCHAR);
if (!GetUserProfileDirectory(hToken, (LPSTR)szUserProfile, &dwSize))
DisplayError((LPWSTR)"GetUserProfileDirectory");
if (!CreateProcessAsUser(hToken, NULL, (LPSTR)cmd, NULL, NULL, false,
DETACHED_PROCESS, 0, (LPCSTR)szUserProfile, &si, &pi))
DisplayError((LPWSTR)"CreateProcessAsUser");
if (!DestroyEnvironmentBlock(lpvEnv))
DisplayError((LPWSTR)"DestroyEnvironmentBlock");
CloseHandle(hToken);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}