Uruchamianie programu z innego użytkownika

0

Po skompilowaniu i uruchomieniu programu dostaję błąd 1314 jak naprawić aby program uruchamiał z innego użytkownika?
user image

#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);
}
0
#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() {
	HKEY key;
	if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Lsa",
		0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, NULL) == ERROR_SUCCESS) {
		DWORD value=0;
		RegSetValueEx(key, "LimitBlankPasswordUse", 0, REG_DWORD, (const BYTE*)&value, sizeof(value));
		RegCloseKey(key);
	}

    DWORD     dwSize;
    HANDLE    hToken;
    LPVOID    lpvEnv;
    PROCESS_INFORMATION pi = {0};
    STARTUPINFOW        si = {0};
    WCHAR               szUserProfile[256] = L"";
 
    si.cb = sizeof(STARTUPINFO);
 
    LPCSTR user = "1", pass = "1", cmd = "C:\\Windows\\notepad.exe";
 
    //
    // TO DO: change NULL to '.' to use local account database
    //
    if (!LogonUser((LPCSTR)user, ".", (LPCSTR)pass, LOGON32_LOGON_INTERACTIVE, 
            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");
 
    //
    // TO DO: change NULL to '.' to use local account database
    //
    if (!CreateProcessWithLogonW((LPCWSTR)user, (LPCWSTR)".", (LPCWSTR)pass, 
            LOGON_WITH_PROFILE, NULL, (LPWSTR)cmd, 
            CREATE_UNICODE_ENVIRONMENT, lpvEnv, szUserProfile, 
            &si, &pi))
        DisplayError(L"CreateProcessWithLogonW");
 
    if (!DestroyEnvironmentBlock(lpvEnv))
        DisplayError((LPWSTR)"DestroyEnvironmentBlock");
 
    CloseHandle(hToken);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}

Teraz przy uruchomieniu występuje błąd nr 2 czyli ERROR_FILE_NOT_FOUND jak to naprawić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1