NTSTATUS SetupUninstallBuild(
    _In_ PPH_SETUP_CONTEXT Context
    )
{
    Context->SetupInstallPath = SetupFindInstallDirectory();

    // Stop Process Hacker.
    if (!ShutdownProcessHacker())
        goto CleanupExit;

    // Stop the kernel driver(s).
    if (!SetupUninstallKph(Context))
        goto CleanupExit;

    // Remove autorun and shortcuts.
    SetupDeleteWindowsOptions(Context);

    // Remove the uninstaller.
    SetupDeleteUninstallFile(Context);

    // Remove the ARP uninstall entry.
    SetupDeleteUninstallKey();

    // Remove the previous installation.
    PhDeleteDirectory(Context->SetupInstallPath);

    ShowUninstallCompleteDialog(Context);
    return STATUS_SUCCESS;

CleanupExit:
    ShowUninstallErrorDialog(Context);
    return STATUS_SUCCESS;
}
示例#2
0
NTSTATUS SetupUpdateBuild(
    _In_ PPH_SETUP_CONTEXT Context
    )
{
    Context->SetupInstallPath = SetupFindInstallDirectory();

    if (!ShutdownProcessHacker())
        goto CleanupExit;

    if (!SetupUninstallKph(Context))
        goto CleanupExit;

    if (!SetupCreateUninstallFile(Context))
        goto CleanupExit;

    SetupCreateUninstallKey(Context);

    if (!SetupExtractBuild(Context))
        goto CleanupExit;

    SetupStartKph(Context);

    if (!SetupExecuteProcessHacker(Context))
        goto CleanupExit;

    PostMessage(Context->DialogHandle, WM_QUIT, 0, 0);
    PhDereferenceObject(Context);  
    return STATUS_SUCCESS;

CleanupExit:

    PostMessage(Context->DialogHandle, WM_APP + IDD_ERROR, 0, 0);
    PhDereferenceObject(Context);
    return STATUS_FAIL_CHECK;
}