From d2ad11928e6eca9501c3dd58983784c98c850a23 Mon Sep 17 00:00:00 2001 From: Gerardo Grignoli Date: Fri, 25 Nov 2022 20:56:05 -0300 Subject: [PATCH] Fixed Windows 7 detection of named pipes. Fixes #215 --- src/gsudo/Rpc/NamedPipeUtils.cs | 34 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/gsudo/Rpc/NamedPipeUtils.cs b/src/gsudo/Rpc/NamedPipeUtils.cs index fd9fc049..12d92bee 100644 --- a/src/gsudo/Rpc/NamedPipeUtils.cs +++ b/src/gsudo/Rpc/NamedPipeUtils.cs @@ -1,7 +1,8 @@ using System; using System.Collections.Generic; using System.IO; - +using System.Linq; + namespace gsudo.Rpc { static class NamedPipeUtils @@ -31,24 +32,25 @@ public static List ListNamedPipes() public static bool ExistsNamedPipe(string name) { - var namedPipes = new List(); - Native.FileApi.WIN32_FIND_DATA lpFindFileData; - - var ptr = Native.FileApi.FindFirstFile($@"\\.\pipe\{GetRootFolder(name)}*", out lpFindFileData); - do - { - if (lpFindFileData.cFileName.EndsWith(name, StringComparison.Ordinal)) - { - Native.FileApi.FindClose(ptr); - Logger.Instance.Log($"Found Named Pipe \"{name}\".", LogLevel.Debug); - return true; - } + //Logger.Instance.Log($"Searching for {name}", LogLevel.Debug); + try + { + return System.IO.Directory.GetFiles("\\\\.\\\\pipe\\", name).Any(); + } + catch + { + // Windows 7 workaround + foreach (var pipe in System.IO.Directory.GetFiles("\\\\.\\\\pipe\\")) + { + if (pipe.EndsWith(name, StringComparison.Ordinal)) + { + //Logger.Instance.Log($"Found Named Pipe {name}", LogLevel.Debug); + return true; + } + } } - while (Native.FileApi.FindNextFile(ptr, out lpFindFileData)); - Native.FileApi.FindClose(ptr); return false; - } static string GetRootFolder(string path)