Example #1
0
        private void UnmapDriveButton_Click(object sender, EventArgs e)
        {
            var selectedDrive = DriveLetter.SelectedItem as WslMappedDriveInfo;

            if (selectedDrive == null)
            {
                return;
            }

            int flags = 0;

            if (PersistentConnection.Checked)
            {
                flags += NativeMethods.CONNECT_UPDATE_PROFILE;
            }

            var resultCode = NativeMethods.WNetCancelConnection2A(selectedDrive.DriveName, flags, Convert.ToInt32(false));

            if (resultCode > 0)
            {
                var message = new Win32Exception(resultCode).Message;
                MessageBox.Show(this, message, Text,
                                MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
            }

            DataSourceRefresher.RunWorkerAsync();
        }
Example #2
0
        private void MapDriveButton_Click(object sender, EventArgs e)
        {
            var selectedDrive = DriveLetter.SelectedItem as WslMappedDriveInfo;

            if (selectedDrive == null)
            {
                return;
            }

            var targetDistro = TargetDistro.SelectedItem as string;

            if (string.IsNullOrWhiteSpace(targetDistro))
            {
                return;
            }

            Process.Start(new ProcessStartInfo(
                              Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "wsl.exe"),
                              $@"-d {targetDistro} -- exit")
            {
                UseShellExecute  = false,
                WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
                CreateNoWindow   = true,
            }).WaitForExit();

            var parameters = new NativeMethods.NetworkResource()
            {
                iScope       = 2,
                iType        = NativeMethods.RESOURCETYPE_DISK,
                iDisplayType = 3,
                iUsage       = 1,
                sRemoteName  = $@"\\wsl$\{TargetDistro.SelectedItem}",
                sLocalName   = selectedDrive.DriveName,
            };

            var flags = 0;

            if (PersistentConnection.Checked)
            {
                flags += NativeMethods.CONNECT_UPDATE_PROFILE;
            }

            var resultCode = NativeMethods.WNetAddConnection2A(ref parameters, null, null, flags);

            if (resultCode > 0)
            {
                var message = new Win32Exception(resultCode).Message;
                MessageBox.Show(this, message, Text,
                                MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
            }
            else
            {
                Process.Start(new ProcessStartInfo(selectedDrive.DriveName)
                {
                    UseShellExecute = true,
                });
            }

            DataSourceRefresher.RunWorkerAsync();
        }
Example #3
0
 private void MapAsDriveForm_Load(object sender, EventArgs e)
 {
     DataSourceRefresher.RunWorkerAsync();
 }