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!
-
-
Schau dir mal die Backslashes in deiner Pfadangabe an, und dann lies hier:
-
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!