Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Anwendung mit Local System Account starten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.02.2007, 11:16 Uhr
ThaMubber



Ich glaube ich liege mit meinem Verdacht schon richtig.


Genau hier

C++:
::GetWindowThreadProcessId(hwnd, &dwProcessID);



hwnd ist immer Null. Process ID ist gesetzt.
Der Prozess läuft mit Adminrechten (RunAs).

Wie komme ich an mein handle ran?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: