Skip to content

Commit b533afe

Browse files
authored
Fix to ensure console window is hidden on Windows 11 (#6)
1 parent d5d7537 commit b533afe

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wsl2-dns-agent"
3-
version = "0.3.4"
3+
version = "0.3.5"
44
edition = "2021"
55
license = "GPL-3.0"
66
description = "An agent that automatically patches your WSL2 DNS configuration for users of Cisco AnyConnect (or similar VPNs)"
@@ -18,7 +18,7 @@ serde = { version = "1.0.137", features = ["derive"] }
1818
simplelog = "0.12.0"
1919
thiserror = "1.0.31"
2020
toml = "0.5.9"
21-
win32-utils = { git = "https://github.com/jacob-pro/win32-utils", features = ["net", "window", "instance", "console"] }
21+
win32-utils = { git = "https://github.com/jacob-pro/win32-utils", features = ["net", "window", "instance"] }
2222

2323
[dependencies.windows]
2424
version = "0.37.0"

src/main.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#![windows_subsystem = "windows"]
12
use crate::runner::{start_runner, RunReason};
23
use crate::tray::Tray;
34
use log::LevelFilter;
@@ -6,7 +7,6 @@ use std::ffi::c_void;
67
use std::fs;
78
use std::fs::File;
89
use std::sync::mpsc::Sender;
9-
use win32_utils::console::hide_console_window_if_in_process;
1010
use win32_utils::instance::UniqueInstance;
1111
use win32_utils::str::ToWin32Str;
1212
use windows::core::PCWSTR;
@@ -27,7 +27,6 @@ pub const APP_NAME: &str = "WSL2 DNS Agent";
2727

2828
fn main() {
2929
set_panic();
30-
hide_console_window_if_in_process();
3130

3231
let _unique = match UniqueInstance::acquire_unique_to_session(APP_NAME) {
3332
Ok(u) => u,

src/wsl.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
use std::io::Write;
2+
use std::os::windows::process::CommandExt;
23
use std::process::{Command, Output, Stdio};
34
use std::string::{FromUtf16Error, FromUtf8Error};
45
use thiserror::Error;
6+
use windows::Win32::System::Threading::CREATE_NO_WINDOW;
57

68
#[derive(Debug)]
79
pub struct WslDistribution {
@@ -51,6 +53,7 @@ fn to_u16(original: &[u8]) -> Vec<u16> {
5153

5254
pub fn get_distributions() -> Result<Vec<WslDistribution>, Error> {
5355
let output = Command::new("wsl.exe")
56+
.creation_flags(CREATE_NO_WINDOW.0)
5457
.arg("--list")
5558
.arg("--verbose")
5659
.output()?;
@@ -101,6 +104,7 @@ fn check_wsl_output(output: &Output) -> Result<(), Error> {
101104
impl WslDistribution {
102105
pub fn read_file(&self, path: &str) -> Result<String, Error> {
103106
let output = Command::new("wsl.exe")
107+
.creation_flags(CREATE_NO_WINDOW.0)
104108
.arg("--distribution")
105109
.arg(&self.name)
106110
.arg("--user")
@@ -115,6 +119,7 @@ impl WslDistribution {
115119
pub fn set_read_only(&self, path: &str, read_only: bool) -> Result<(), Error> {
116120
let arg = if read_only { "+i" } else { "-i" };
117121
let output = Command::new("wsl.exe")
122+
.creation_flags(CREATE_NO_WINDOW.0)
118123
.arg("--distribution")
119124
.arg(&self.name)
120125
.arg("--user")
@@ -129,6 +134,7 @@ impl WslDistribution {
129134

130135
pub fn write_file(&self, path: &str, contents: &str) -> Result<(), Error> {
131136
let mut p = Command::new("wsl.exe")
137+
.creation_flags(CREATE_NO_WINDOW.0)
132138
.stdin(Stdio::piped())
133139
.stdout(Stdio::piped())
134140
.stderr(Stdio::piped())
@@ -151,6 +157,7 @@ impl WslDistribution {
151157

152158
pub fn terminate(&self) -> Result<(), Error> {
153159
let output = Command::new("wsl.exe")
160+
.creation_flags(CREATE_NO_WINDOW.0)
154161
.arg("--terminate")
155162
.arg(&self.name)
156163
.output()?;

0 commit comments

Comments
 (0)