winer 0.1.5

Inspect Wine runtimes, host OS details, and hosted processes
Documentation
#[cfg(unix)]
fn main() {
    use winer::host::Scanner;

    let mut scanner = Scanner::new();
    let scan = scanner.scan();

    for universe in scan.universes() {
        if let Some(server) = universe.server() {
            println!("Server ({}) @ {}", server.pid(), server.prefix().display());
        } else {
            println!("No Server")
        }

        println!("Processes:");
        for process in universe.processes() {
            let setup = process.setup();
            println!("    {} ({})", process.image().display(), process.pid());
            println!(
                "        Arch        : {}",
                setup.arch().map(|s| s.to_string()).unwrap_or("N/A".into())
            );
            println!(
                "        Preloader   : {}",
                process
                    .preloader()
                    .map(|s| s.display().to_string())
                    .unwrap_or("N/A".into())
            );
            println!(
                "        Loader      : {}",
                setup
                    .loader()
                    .map(|s| s.display().to_string())
                    .unwrap_or("N/A".into())
            );
            println!(
                "        Log Options : {}",
                setup
                    .log_options()
                    .map(|s| s.to_string())
                    .unwrap_or("N/A".into())
            );
        }
        if universe.processes().is_empty() {
            println!("Not Found");
        }
        println!();
    }

    println!("Orphaned Processes:");
    for process in scan.orphans() {
        println!("{} ({})", process.image().display(), process.pid());
    }
    if scan.orphans().is_empty() {
        println!("Not Found");
    }
}

#[cfg(windows)]
fn main() {
    eprintln!("This example only runs on Wine host.")
}