Пример #1
0
        public static void Add_RemoteConnection(Args_Add_RemoteConnection args = null)
        {
            if (args == null)
            {
                args = new Args_Add_RemoteConnection();
            }

            var NetResourceInstance = Activator.CreateInstance(typeof(NetResource)) as NetResource;

            NetResourceInstance.ResourceType = NativeMethods.ResourceType.Disk;

            var Paths = new List <string>();

            if (args.ComputerName != null)
            {
                foreach (var item in args.ComputerName)
                {
                    var TargetComputerName = item;
                    TargetComputerName = TargetComputerName.Trim('\\');
                    Paths.Add($@"\\{TargetComputerName}\IPC$");
                }
            }
            else
            {
                Paths.AddRange(args.Path);
            }

            foreach (var TargetPath in Paths)
            {
                NetResourceInstance.RemoteName = TargetPath;
                Logger.Write_Verbose($@"[Add-RemoteConnection] Attempting to mount: {TargetPath}");

                // https://msdn.microsoft.com/en-us/library/windows/desktop/aa385413(v=vs.85).aspx
                //   CONNECT_TEMPORARY = 4
                var Result = NativeMethods.WNetAddConnection2(NetResourceInstance, args.Credential.Password, args.Credential.UserName, 4);

                if (Result == 0)
                {
                    Logger.Write_Verbose($@"{TargetPath} successfully mounted");
                }
                else
                {
                    throw new Exception($@"[Add-RemoteConnection] error mounting {TargetPath} : {new System.ComponentModel.Win32Exception((int)Result).Message}");
                }
            }
        }
Пример #2
0
 public static void Add_RemoteConnection(Args_Add_RemoteConnection args = null)
 {
     AddRemoteConnection.Add_RemoteConnection(args);
 }