lucasg/Dependencies · warning
peview.exe file could not be found !
Error message
peview.exe file could not be found !
What it means
This is a WPF MessageBox dialog (not a thrown exception) shown by DisplayModuleInfo.OpenPeviewer. Dependencies launches the external peview.exe (from Process Hacker) to inspect a PE module; its on-disk location is read from the PeViewerPath user setting. When File.Exists(programPath) is false, the user is told the binary is missing and the method returns false without launching anything.
Source
Thrown at DependenciesGui/Models/ModuleInfo.cs:405
}
return _OpenPeviewerCommand;
}
}
public bool OpenPeviewer(object Module)
{
string programPath = Dependencies.Properties.Settings.Default.PeViewerPath;
Process PeviewerProcess = new Process();
if ((Module == null))
{
return false;
}
if (!File.Exists(programPath))
{
MessageBox.Show("peview.exe file could not be found !");
return false;
}
string Filepath = (Module as DisplayModuleInfo).GetPathDisplayName(true);
if (Filepath == null)
{
return false;
}
PeviewerProcess.StartInfo.FileName = programPath;
PeviewerProcess.StartInfo.Arguments = Filepath;
return PeviewerProcess.Start();
}
public RelayCommand OpenNewAppCommand
{
get
{View on GitHub (pinned to 1997a40000)
Solutions
- Open Dependencies Settings and set PeViewerPath to the real peview.exe location (or use the file picker), then restart.
- Re-run Deploy-Dependencies.ps1 / Get-DependenciesDeps so peview.exe is downloaded and PEVIEW_PATH is populated.
- Verify the binary is actually on disk at the configured path (File.Exists) and that the path is absolute.
- If the deploy hash check failed, update $PeviewBuildHash in Deploy-Dependencies.ps1 to the current Process Hacker artifact hash.
Example fix
// before
string programPath = Dependencies.Properties.Settings.Default.PeViewerPath;
if (!File.Exists(programPath))
{
MessageBox.Show("peview.exe file could not be found !");
return false;
}
// after - let the user locate it and persist the choice
string programPath = Dependencies.Properties.Settings.Default.PeViewerPath;
if (string.IsNullOrWhiteSpace(programPath) || !File.Exists(programPath))
{
var dlg = new Microsoft.Win32.OpenFileDialog { Filter = "peview.exe|peview.exe" };
if (dlg.ShowDialog() != true) return false;
programPath = dlg.FileName;
Dependencies.Properties.Settings.Default.PeViewerPath = programPath;
Dependencies.Properties.Settings.Default.Save();
} Defensive patterns
Strategy: validation
Validate before calling
string programPath = Dependencies.Properties.Settings.Default.PeViewerPath;
if (string.IsNullOrWhiteSpace(programPath) || !File.Exists(programPath))
{
// do not call OpenPeviewer / prompt the user to set PeViewerPath first
return;
} Prevention
- Run the deploy/download step so peview.exe is bundled next to Dependencies.exe.
- Persist PeViewerPath as an absolute path in Settings and validate it on startup.
- Expose a Settings file picker so users can repair a broken path without editing config by hand.
When it happens
Trigger: Calling OpenPeviewer (e.g. the 'open in peview' context command / double-clicking a module in the tree) while Dependencies.Properties.Settings.Default.PeViewerPath is empty, unset, or points to a path that no longer exists on disk.
Common situations: Portable/fresh install where the Deploy-Dependencies.ps1 step never downloaded peview.exe; the pinned download hash in the deploy script drifted so extraction was skipped; the user moved or deleted the binary; PeViewerPath still holds a stale default after an upgrade.
Related errors
- {0:s} file could not be found !
- The binary caching preference has been modified, you need to
- Loading PE file "{0:s}" failed : file not present on disk.
- Can only convert to string.
- Can only convert an instance of enum.
AI-assisted analysis of lucasg/Dependencies@1997a40000 (2026-08-13).
Data as JSON: /api/errors/53bcf64d916bc1e2.
Report an issue: GitHub.