Berechtigung mittels CreateProcessWithLogonW auf Netz Freigabe



  • Hallo Leute,

    habe da ein mittel schweres Problem.

    Ich schreibe mittels Eigenes Tool eine .cmd Datei.
    Diese Datei starte ich mittels CreateProcessWithLogonW Befehl:

    BOOL status = FALSE;
    
    				STARTUPINFOW si;
    				PROCESS_INFORMATION pi; 
    
    				memset(&si, 0, sizeof(si)); 
    				memset(&pi, 0, sizeof(pi)); 
    				si.cb = sizeof(si);
    std::string u_strStartProgramm = "c:\\test.cmd";
    
    				size_t count = u_strStartProgramm.size() + 1; 
    				wchar_t* p = new wchar_t[count]();
    				copy(u_strStartProgramm.begin(),u_strStartProgramm.end(),p); 
    
    				std::string Name = "administrator";
    				size_t count2 = Name.size() + 1; 
    				wchar_t* pName = new wchar_t[count2]();
    				copy(Name.begin(),Name.end(),pName); 
    
    				std::string Passwort = "123456";
    				size_t count3 = Passwort.size() + 1; 
    				wchar_t* pPasswort = new wchar_t[count3]();
    				copy(Passwort.begin(),Passwort.end(),pPasswort); 
    
    				std::string Domaine = "DIEDOMAINE";
    				size_t count4 = Domaine.size() + 1; 
    				wchar_t* pDomaine = new wchar_t[count4]();
    				copy(Domaine.begin(),Domaine.end(),pDomaine); 
    
    				if(!CreateProcessWithLogonW(pName, pDomaine, pPasswort, 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! 
    					status = FALSE;
    				}
    				else
    				{
    					status = TRUE;
    				}
    
    				WaitForSingleObject( pi.hProcess, INFINITE );
    				CloseHandle(pi.hProcess); 
    				CloseHandle(pi.hThread);
    
    				// Ende für Code
    				delete p;
    				delete pName;
    				delete pPasswort;
    				delete pDomaine;
    	return status;
    

    Desweiteren habe ich auch wieder über .cmd commands Laufwerke verbinden lassen, weil ich auf diese Zugreiffen muß.
    So jetzt funkt das ganze auch. Allerdings bekomme ich wenn ich mein Tool auf mehreren Arbeitsstationen laufen lasse Berechtigungsprobleme zu den Freigaben.

    Entweder dauert es ewig lange oder er sagt mir dass ich keine Berechtigung mehr habe.

    Freigabe hatt allerdings jeder auser Vollzugriff.

    Dies geschieht immer dann, wenn ich mittels CreateProcessWithLogonW darauf zugreiffe.

    Kann mir jemand helfen ??

    Gruß und Danke
    andy_mann



  • Hallo,

    mal anders herum gefragt, wie kann ich den User den ich mit CreateProcessWithLogonW angemeldet habe wieder beenden ?

    Es sieht nähmlich so aus, als ob dieser User mit dieser Maschine dann irgend wann sich zu oft angemeldet hat und für die anderen User kein Zertifikat mehr vor liegt.

    Kann mir jemand helfen ??

    Gruß
    andy_mann


Anmelden zum Antworten