000
01.02.2007, 17:19 Uhr
ThaMubber
|
Hi brauche dringend Hilfe,
habe hier ein MFC Programm wofür ich vor einiger Zeit ein "Steuerprogramm" geschrieben habe. Es startet diese Applikation auf nem zweiten Desktop, welches ich mit dem folgenden Code kreiere :
C++: |
... secDesk.nLength = sizeof(secDesk); secDesk.lpSecurityDescriptor = NULL; secDesk.bInheritHandle = true; ...
hdesk = CreateDesktopW(desktop,NULL,NULL,DF_ALLOWOTHERACCOUNTHOOK,GENERIC_ALL,&secDesk);
|
Nachdem der neue für den User unsichtbare Desktop erzeugt wurde starte ich die "Fremdappliaktion"
C++: |
... si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_SHOWNORMAL;
securProc.nLength = sizeof(securProc); securProc.lpSecurityDescriptor = NULL; securProc.bInheritHandle = true; ...
if(CreateProcessW(NULL,filename,&securProc,NULL,TRUE,0,NULL,dir,&si,&piProc) != 0) { WaitForInputIdle(piProc.hProcess,INFINITE); wi.dwProcessID = piProc.dwProcessId; wi.hWnd = 0; } else return false;
|
In meiner Stuermethode (welches die Fremdapplikation steuert) hole ich mir die Fenster... vom neu erzeutgen Desktop rein.
C++: |
... EnumDesktopWindows(hdesk,EnumWindowsProc,(LPARAM) &wi) ...
BOOL CALLBACK MyProg::EnumWindowsProc(HWND hwnd, LPARAM lParam) { WNDINFO* pWndInfo = (WNDINFO*)(lParam); DWORD dwProcessID;
::GetWindowThreadProcessId(hwnd, &dwProcessID); if (dwProcessID == pWndInfo->dwProcessID) { pWndInfo->hWnd = hwnd; return false; } return true; }
|
Usw... ich schicke mit PostMessage nachrichten an die Fremdapplikation und steuere diversen dinge. Schön und gut....
Es hat sich herausgestellt dass meine,ebenfalls in MFC geschrieben Appliaktion ohne Benutzerinteraktion laufen soll. Hab also das Dialogfenster meiner Applikation versteckt. Es wird im Prinzip einmal angestossen...es öffnet die Fremdalliaktion...steuert diese....beendet die Fremdapplikation und beendet sich selbst.
All dies bis jetzt als lokaler User.
Nun soll mein Programm beim User als "Local System Account" aufgerufen werden.
Funktioniert aber nicht. Woran könnte es liegen? Ich habe als eingeloggtre User meine Applikation, ebenfalls als Administrator (Run as), gestartet. Funktioniert ebenfalls nciht. Es scheint so zu sein dass nur der gerade eingeloggte User das Programm erfolgreich benutzen kann.
Falls irgendwas unklar sein sollte, oder irgendwas fehlt...sagt mir bescheid.
Danke!
Edit:
hmm...kann es sein dass EnumDesktopWindows mit der ganzen Sache nicht mehr klar kommt? Dieser Post wurde am 01.02.2007 um 17:36 Uhr von ThaMubber editiert. |