Defragmenierungsoberfläche kann nicht aufgerufen werden! Windows 7, 64 Bit



  • Hallo zusammen,

    ich kann das Windows Defragmentierungsprogramm nicht starten!

    Ich mache:

    String pfad = "%windir%\system32\dfrgui.exe";
    ShellExecute(Handle, "open", pfad.c_str(), 0, 0, SW_SHOW);
    

    Egal was ich für Pfad, oder Flags einsetze, das Fenster für die Defragmentierung wird nicht aufgerufen. (Win 7, 64 Bit)

    Hat jemand ein Tipp?
    Danke im Voraus!



  • Hallo

    Dann schau dir doch mal an, was für Fehlermeldungen ShellExecute dir gibt.

    bis bald
    akari



  • Schau dir mal die Backslashes in deiner Pfadangabe an, und dann lies hier:

    https://de.wikipedia.org/wiki/Escape-Sequenz#Escape-Sequenzen_in_C_und_verwandten_Programmiersprachen



  • Hallo Zusammen,

    ich habe folgendes versucht:

    AnsiString S = BSName();
    	AnsiString Pfad = GetOrdPath(CSIDL_SYSTEM); // System32 Ordner
    	//ShowMessage(Pfad);
    	if(S == "Vista" || S == "7")
    		{
    		AnsiString VollerPfad = Pfad +  "\\dfrgui.exe";
    		LPCTSTR ps = VollerPfad.c_str();
    		int i = (int) ShellExecute(0, "open", ps, 0, 0, SW_SHOWNORMAL);
    		ShowMessage(IntToStr(i));
    
    		}
    	else
    		{
    		AnsiString VollerPfad = Pfad +  "\\dfrg.msc";
    		ShellExecute(0, "open", VollerPfad.c_str(), 0, 0, SW_NORMAL);
    		}
    

    Fehlercode 42;

    Den Pfad hatte ich ausgeben lassen, es ist korrekt: C:\Windows\System32\dfrgui.exe

    Das Defrag. Programm wird trotzdem nicht gestartet!

    Gibt es noch ein Hacken?



  • Hallo,

    Nr. 42 ist kein Fehler. Nur Returnwerte kleiner 32 markieren einen Fehler.
    Das bedeutet also das ShellExecute dein Programm findet und dann wahrscheinlich auch startet.
    Das du das nicht sehen kannst liegt evtl. daran, dass es sich gleich wieder schließt. Evtl. gibt es irgendwelche Probleme mit den Rechten.



  • Entschuldigung nicht Fehlercode, sondern Ruckgabewert 42, stimmt!

    aber ich kann das Problem trotzdem nicht lösen. Mein Programm erhällt durch Manifest die Adminrechte und kann nur mit Adminrechten ausgeführt werden. 😕



  • Hallo,

    behelfsmässig lässt sich diese App auch so starten:

    STARTUPINFO         si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(STARTUPINFO) );
    ZeroMemory( &pi, sizeof(PROCESS_INFORMATION) );
    
    si.cb          = sizeof( STARTUPINFO );
    si.dwFlags     = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOWNORMAL;
    
    CreateProcess(NULL, "explorer.exe /root, C:\\windows\\system32\\dfrgui.exe",
    		NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi );
    

    mfg
    kpeter



  • Danke!

    Einzige Lösung, die endlich funktioniert! 🙂


Anmelden zum Antworten