示例#1
0
        public void RenamePrinter(string sPrinterName, string newName, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                token.ThrowIfCancellationRequested();
            }

            objManagementScope = new ManagementScope(ManagementPath.DefaultPath);
            objManagementScope.Connect();

            SelectQuery objSelectQuery = new SelectQuery();

            objSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + sPrinterName.Replace("\\", "\\\\") + "'";
            ManagementObjectSearcher   oObjectSearcher   = new ManagementObjectSearcher(objManagementScope, objSelectQuery);
            ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();

            if (oObjectCollection.Count != 0)
            {
                foreach (ManagementObject oItem in oObjectCollection)
                {
                    if (token.IsCancellationRequested)
                    {
                        token.ThrowIfCancellationRequested();
                    }

                    oItem?.InvokeMethod("RenamePrinter", new object[] { newName });
                    OnAtomicStateChange?.Invoke(this, new StringEventArgs($"Renamed printer : {sPrinterName} to {newName}"));
                    return;
                }
            }
        }
示例#2
0
        public void Map(string sDriveLetter, string sNetworkPath, bool persistant, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                token.ThrowIfCancellationRequested();
            }

            int iFlags = 0;

            if (sNetworkPath.Substring(sNetworkPath.Length - 1, 1) == @"\")
            {
                sNetworkPath = sNetworkPath.Substring(0, sNetworkPath.Length - 1);
            }
            SafeNativeMethods.NETRESOURCE oNetworkResource = new SafeNativeMethods.NETRESOURCE()
            {
                oResourceType = SafeNativeMethods.ResourceType.RESOURCETYPE_DISK,
                sLocalName    = sDriveLetter + ":",
                sRemoteName   = sNetworkPath
            };


            if (persistant)
            {
                iFlags += (int)Flags.CONNECT_UPDATE_PROFILE;
            }

            if (IsDriveMapped(sDriveLetter, token))
            {
                Disconnect(sDriveLetter, true, token);
            }
            SafeNativeMethods.WNetAddConnection2(ref oNetworkResource, null, null, iFlags);

            OnAtomicStateChange?.Invoke(this, new StringEventArgs($"{sDriveLetter} drive mapped to {sNetworkPath}"));
        }
示例#3
0
        public bool AddPrinter(string sPrinterName, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                token.ThrowIfCancellationRequested();
            }

            try
            {
                objManagementScope = new ManagementScope(ManagementPath.DefaultPath);
                objManagementScope.Connect();

                ManagementClass      objPrinterClass    = new ManagementClass(new ManagementPath("Win32_Printer"), null);
                ManagementBaseObject objInputParameters = objPrinterClass.GetMethodParameters("AddPrinterConnection");
                objInputParameters.SetPropertyValue("Name", sPrinterName);
                if (IsPrinterInstalled(sPrinterName, token))
                {
                    DisconnectPrinter(sPrinterName, token);
                }
                objPrinterClass?.InvokeMethod("AddPrinterConnection", objInputParameters, null);
                OnAtomicStateChange?.Invoke(this, new StringEventArgs($"Completed adding printer : {sPrinterName}"));
                return(true);
            }

            catch (OperationCanceledException)
            {
                throw;
            }

            catch (Exception)
            {
                OnAtomicStateError?.Invoke(this, new StringEventArgs($"Failed adding printer : {sPrinterName}"));
                return(false);
            }
        }
示例#4
0
        public List <Printers> GetMappedPrinters(string _regpath, CancellationToken token)
        {
            List <Printers> MappedPrinters = new List <Printers>();

            var _MappedPrinters = GetSubkeysValue(_regpath, RegistryHive.Users, token);

            foreach (var item in _MappedPrinters)
            {
                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }

                OnAtomicStateChange?.Invoke(this, new StringEventArgs($"Capturing : {item.KeyName.Replace(@",", @"\")}"));

                MappedPrinters.Add(new Printers()
                {
                    Name    = item.KeyName.Replace(@",", @"\"),
                    Network = true,
                    Default = false
                });
            }

            return(MappedPrinters);
        }
示例#5
0
        public int Disconnect(string sDriveLetter, bool bForceDisconnect, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                token.ThrowIfCancellationRequested();
            }

            if (bForceDisconnect)
            {
                OnAtomicStateChange?.Invoke(this, new StringEventArgs($"{sDriveLetter} drive disconnected"));
                return(SafeNativeMethods.WNetCancelConnection2(sDriveLetter + ":", 0, 1));
            }
            else
            {
                OnAtomicStateChange?.Invoke(this, new StringEventArgs($"{sDriveLetter} drive disconnected"));
                return(SafeNativeMethods.WNetCancelConnection2(sDriveLetter + ":", 0, 0));
            }
        }
示例#6
0
        public List <Key> GetNetworkShares(string _regpath, CancellationToken token)
        {
            List <Key> NetworkShares = new List <Key>();

            NetworkShares = GetSubkeysValue(_regpath, RegistryHive.Users, token);

            foreach (var share in NetworkShares)
            {
                string _driveletter = share.KeyName;
                foreach (var value in share.Values)
                {
                    if (value.Key.Equals("RemotePath"))
                    {
                        OnAtomicStateChange?.Invoke(this, new StringEventArgs($"Capturing : {_driveletter}  {value.Value.ToString()}"));
                    }
                }
            }

            return(NetworkShares);
        }
示例#7
0
        public Dictionary <string, string> GetNetworkSharesWMI(CancellationToken token)
        {
            Dictionary <string, string> _mappeddrives = new Dictionary <string, string>();
            ManagementObjectSearcher    searcher      = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_MappedLogicalDisk");

            foreach (ManagementObject queryObj in searcher.Get())
            {
                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }
                if (queryObj["Name"] != null && queryObj["ProviderName"] != null)
                {
                    OnAtomicStateChange?.Invoke(this, new StringEventArgs($"Capturing : {queryObj["Name"].ToString()} {queryObj["ProviderName"].ToString()}"));

                    _mappeddrives.Add(queryObj["Name"].ToString(), queryObj["ProviderName"].ToString());
                }
            }
            return(_mappeddrives);
        }
示例#8
0
        public List <Printers> GetMappedPrintersWMI(CancellationToken token)
        {
            List <Printers> _mappedprinters = new List <Printers>();
            var             searcher        = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Printer");

            foreach (ManagementObject queryObj in searcher.Get())
            {
                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }

                Printers prn = new Printers();
                prn.Name    = queryObj.GetPropertyValue("Name").ToString();
                prn.Default = (bool)queryObj.GetPropertyValue("Default");
                prn.Network = (bool)queryObj.GetPropertyValue("Network");
                if (prn.Network)
                {
                    OnAtomicStateChange?.Invoke(this, new StringEventArgs($"Capturing : {prn.Name}"));
                }
                _mappedprinters.Add(prn);
            }
            return(_mappedprinters);
        }