008
28.09.2004, 23:10 Uhr
andy_mann
|
hhmmm, nö leider nicht, habe ich auch schon probiert.....
hier mal die Funktion:
C++: |
void CProjekt::StarteProgrammMitPasswort(std::string u_strStartProgramm) { STARTUPINFOW si; PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si)); memset(&pi, 0, sizeof(pi)); si.cb = sizeof(si);
size_t count = u_strStartProgramm.size() + 1; wchar_t* p = new wchar_t[count]();
copy(u_strStartProgramm.begin(),u_strStartProgramm.end(),p); if(!CreateProcessWithLogonW(L"test", L"test", L"test", LOGON_WITH_PROFILE, NULL, p, NULL, NULL, NULL, &si, &pi)) // Der Punkt beim Parameter 2 bedeutet, das die lokale Benutzerdatenbank verwendet werden soll. { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox(NULL, (LPCTSTR)lpMsgBuf, NULL, MB_OK | MB_ICONEXCLAMATION); LocalFree(lpMsgBuf); // Bei Fehlermeldung: "Der angegebene Dienst kann nicht gestartet werden..." // überprüfe ob der Dienst "Sekundäre Anmeldung" aktiviert und gestartet ist! }
WaitForSingleObject( pi.hProcess, INFINITE ); CloseHandle(pi.hProcess); CloseHandle(pi.hThread);
// Ende für Code delete p; // ---------------------------------------------------------------- }
|
Gruß andy_mann Dieser Post wurde am 28.09.2004 um 23:11 Uhr von andy_mann editiert. |