lucasg/Dependencies · info

This binary use the App-V containerization technology which

Error message

This binary use the App-V containerization technology which fiddle with search directories and PATH env in ways Dependencies can't handle.

Following results are probably not quite exact.

What it means

Shown once per DependencyWindow by TriggerWarningOnAppvIsvImports (DependenciesGui/DependencyWindow.xaml.cs:682) when an analysed module imports AppvIsvSubsystems32.dll or AppvIsvSubsystems64.dll (case-insensitive). These indicate a Microsoft App-V virtualised application; App-V rewrites DLL search order and PATH in ways Dependencies cannot replicate, so the displayed dependency tree may be inaccurate. The _DisplayWarning flag suppresses repeat popups.

Source

Thrown at DependenciesGui/DependencyWindow.xaml.cs:682

                ImportModule.ApiSetModuleName = BinaryCache.LookupApiSetLibrary(DllImport.Name);

                if (DllImport.Name.StartsWith("ext-"))
                {
                    ImportModule.Flags |= ModuleFlag.ApiSetExt;
                }
            }

            return ImportModule;
        }

        private void TriggerWarningOnAppvIsvImports(string DllImportName)
        {
            if (String.Compare(DllImportName, "AppvIsvSubsystems32.dll", StringComparison.OrdinalIgnoreCase) == 0 ||
                    String.Compare(DllImportName, "AppvIsvSubsystems64.dll", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    if (!this._DisplayWarning)
                    {
                        MessageBoxResult result = MessageBox.Show(
                        "This binary use the App-V containerization technology which fiddle with search directories and PATH env in ways Dependencies can't handle.\n\nFollowing results are probably not quite exact.",
                        "App-V ISV disclaimer"
                        );

                        this._DisplayWarning = true; // prevent the same warning window to popup several times
                    }

            }
        }

        private void ProcessAppInitDlls(Dictionary<string, ImportContext> NewTreeContexts, PE AnalyzedPe, ImportContext ImportModule)
        {
            List<PeImportDll> PeImports = AnalyzedPe.GetImports();

            // only user32 triggers appinit dlls
            string User32Filepath = Path.Combine(FindPe.GetSystemPath(this.Pe), "user32.dll");
            if (ImportModule.PeFilePath != User32Filepath)
            {

View on GitHub (pinned to 1997a40000)

Solutions

  1. Treat the reported imports/exports as advisory, not authoritative, for App-V binaries.
  2. For ground truth, analyse the real (de-virtualised) binary inside the App-V package mount point rather than the launcher.
  3. Dismiss the dialog (it only appears once per window) and proceed with the caveat in mind.
Defensive patterns

Strategy: fallback

Validate before calling

// Detect App-V early and warn the user / branch behaviour.
bool isAppV = imports.Any(i =>
    string.Equals(i.Name, "AppvIsvSubsystems32.dll", StringComparison.OrdinalIgnoreCase) ||
    string.Equals(i.Name, "AppvIsvSubsystems64.dll", StringComparison.OrdinalIgnoreCase));
if (isAppV) { /* mark results non-authoritative */ }

Prevention

When it happens

Trigger: Analysing an App-V sequenced/virtualised executable whose import table references AppvIsvSubsystems32/64.dll.

Common situations: Inspecting an App-V package's executable; analysing a shortcut to a virtualised app; sequencing output from the App-V Sequencer.

Related errors


AI-assisted analysis of lucasg/Dependencies@1997a40000 (2026-08-13). Data as JSON: /api/errors/aa5cda5665870a17. Report an issue: GitHub.