This program is used to format a USB Drive or a hard drive.

Code:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using Microsoft.VisualBasic;
- using Microsoft.VisualBasic.ApplicationServices;
- using System.Linq;
- using System.IO;
- using System.Diagnostics;
- using System.Text;
- using System.Windows.Forms;
-
- namespace Drive_Formatter
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- string request,strName;
- Process MyProcess = new Process();
- private void button1_Click(object sender, EventArgs e)
- {
- DriveInfo SelectedDrive = new DriveInfo(comboBoxDrives.Text);
- if (MessageBox.Show("Do you really want to format?", "Info", MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
-
- if (SelectedDrive.DriveType == DriveType.Removable)
- {
- //check if quick format checkbox is checked
- if (checkBoxQuickformat.Checked == false)
- {
- strName = textBoxVolumeLabel.Text.Trim();
- request = "Format /v:" + strName + " /x /backup " + SelectedDrive.Name.Replace("\\", " ");
- MyProcess.StartInfo.RedirectStandardOutput = true;
- MyProcess.StartInfo.RedirectStandardError = true;
- MyProcess.StartInfo.CreateNoWindow = true;
- MyProcess.StartInfo.UseShellExecute = false;
- //this try statement is here to avoid the application to crash,
- //when the is no enough space, read-only location
- try
- {
- File.WriteAllText("batman.bat", request + Environment.NewLine);
- }
- catch (IOException m)
- {
- MessageBox.Show(m.Message.ToString());
- buttonFormat.Enabled = true;
- return;
- }
- MyProcess.StartInfo.FileName = "batman.bat";
- //START the process
- MyProcess.Start();
- timer1.Enabled = true;
-
- }
- else
- {
- strName = textBoxVolumeLabel.Text.Trim();
- //note the below line can also work on Limited/Standard user
- request = "Format /v:" + strName + " /x /Q /backup " + SelectedDrive.Name.Replace("\\", " ");
- MyProcess.StartInfo.RedirectStandardOutput = true;
- MyProcess.StartInfo.RedirectStandardError = true;
- MyProcess.StartInfo.CreateNoWindow = true;
- MyProcess.StartInfo.UseShellExecute = false;
- //this try statement is here to avoid the application to crash,
- //when the is no enough space, read-only location
- try
- {
- File.WriteAllText("batman.bat", request + Environment.NewLine);
- }
- catch (IOException m)
- {
- MessageBox.Show(m.Message.ToString());
- buttonFormat.Enabled = true;
- return;
- }
- MyProcess.StartInfo.FileName = "batman.bat";
- //START the process
- MyProcess.Start();
- timer1.Enabled = true;
- }
- }
- else if (SelectedDrive.DriveType == DriveType.Fixed)
- {
- if (checkBoxQuickformat.Checked == false)
- {
- MyProcess.StartInfo.RedirectStandardOutput = true;
- MyProcess.StartInfo.RedirectStandardError = true;
- MyProcess.StartInfo.CreateNoWindow = true;
- MyProcess.StartInfo.UseShellExecute = false;
- try
- {
- File.WriteAllText("batman.bat", "Format /x /v:" + textBoxVolumeLabel.Text + " " + comboBoxDrives.SelectedItem.ToString());
- }
- catch (IOException m)
- {
- MessageBox.Show(m.Message.ToString());
- buttonFormat.Enabled = true;
- return;
- }
- MyProcess.StartInfo.FileName = "batman.bat";
- //START the process
- MyProcess.Start();
- timer1.Enabled = true;
- }
- else
- {
- MyProcess.StartInfo.RedirectStandardOutput = true;
- MyProcess.StartInfo.RedirectStandardError = true;
- MyProcess.StartInfo.CreateNoWindow = true;
- MyProcess.StartInfo.UseShellExecute = false;
- try
- {
- File.WriteAllText("batman.bat", "Format /q /x /v:" + textBoxVolumeLabel.Text + " " + comboBoxDrives.SelectedItem.ToString());
- }
- catch (IOException m)
- {
- MessageBox.Show(m.Message.ToString());
- buttonFormat.Enabled = true;
- return;
- }
- MyProcess.StartInfo.FileName = "batman.bat";
- //START the process
- MyProcess.Start();
- timer1.Enabled = true;
- }
-
-
-
- }
-
-
- }
- }
-
-
- bool isFormating=false ;
-
- private void timer1_Tick(object sender, EventArgs e)
- {
- if (labelProgress.Text.Contains("Volume Serial") == false)
- {
- //check if format was aborted
- if (labelProgress.Text.Contains("Format aborted.") == false)
- {
- labelInfo.Text = "Please wait, there formater is busy...";
- //get the current progress
-
- labelProgress.Text = MyProcess.StandardOutput.ReadLine().ToString();
- //disable the format button
- buttonFormat.Enabled = false;
- isFormating = true;
- }
- else {
- timer1.Enabled = false;
- labelInfo.Text = "Format aborted.";
- MessageBox.Show(labelInfo.Text, "Error");
- labelProgress.Text = string.Empty;
- isFormating = false;
- buttonFormat.Enabled = true;
- }
- if (labelProgress.Text.Contains("Enter current volume label") == true )
- {
- StreamWriter stremwriter ;
- stremwriter = MyProcess.StandardInput;
- stremwriter.Write(FixedHardDriveName);
- stremwriter.Close();
- }
-
-
- }
- else
- {
- timer1.Enabled = false;
- labelInfo.Text = "Done Formating";
- labelProgress.Text = string.Empty;
- MessageBox.Show(labelInfo.Text);
- isFormating = false;
- buttonFormat.Enabled = true;
-
- }
-
- }
-
- private void textBoxVolumeLabel_KeyPress(object sender, KeyPressEventArgs e)
- {
- //allow only alphabets to be entered in the textbox
- if (((e.KeyChar < 'a') || (e.KeyChar > 'z')) && ((e.KeyChar < 'A') || (e.KeyChar > 'Z' )))
- {
- e.Handled = true;
- }
- }
- Microsoft.VisualBasic.ApplicationServices.User Myuser;
- private void Form1_Load(object sender, EventArgs e)
- {
- Myuser = new User();
- if (Myuser.IsInRole("Administrators") != true)
- {
- //get all attached removable drives
- foreach (string AttachedDrive in Environment.GetLogicalDrives())
- {
-
- DriveInfo CompDrive = new DriveInfo(AttachedDrive);
-
- if ((CompDrive.Name != "A:\\") && (CompDrive.Name != "B:\\"))
- {
- //allow only removable and fixed drives to be added in the combobox
- if ((CompDrive.DriveType == DriveType.Removable) || (CompDrive.DriveType == DriveType.Fixed))
- {
-
- //add drive name into the combobox
- comboBoxDrives.Items.Add(CompDrive.Name);
-
- }
- }
- }
- //select the first item on the combobox
- comboBoxDrives.SelectedIndex = 0;
-
- }
- else
- {
- MessageBox.Show("Administrators prevelegies required.");
- this.Close();
- }
- }
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (isFormating == true)
- {
- e.Cancel = false;
- }
- else
- {
- if (File.Exists("batman.bat") == true)
- {
- //delete the batman.bat file
- File.Delete("batman.bat");
- }
- }
- //check if the application is closed by a taskmanager
- if (e.CloseReason == CloseReason.TaskManagerClosing)
- {
- if (File.Exists("batman.bat") == true)
- {
- //delete the batman.bat file
- File.Delete("batman.bat");
- }
- }
- }
-
- private void buttonClose_Click(object sender, EventArgs e)
- {
- if (isFormating == false)
- {
- if (File.Exists("batman.bat") == true)
- {
- //delete the batman.bat file
- File.Delete("batman.bat");
- this.Close();
- }
- }
-
-
- }
- string FixedHardDriveName;
- private void comboBoxDrives_SelectedValueChanged(object sender, EventArgs e)
- {
- DriveInfo SelectedDrive = new DriveInfo(comboBoxDrives.Text);
- if (SelectedDrive.IsReady == true )
- {
- if (SelectedDrive.VolumeLabel == String.Empty )
- {
- textBoxVolumeLabel.Text = "Removable Disc";
- FixedHardDriveName = SelectedDrive.VolumeLabel;}
- else{
- FixedHardDriveName = SelectedDrive.VolumeLabel;
- textBoxVolumeLabel.Text = SelectedDrive.VolumeLabel;
- }
-
- }
-
- }
- }
- }