开机启动
支持设置开机启动,下次工控机或者电脑启动后就能够自动检测
指定监控磁盘
支持监控指定的盘符(目前不支持多盘符,源码在下面,你可以根据自己的需要调整代码)
设置阈值
支持当磁盘使用容量达到一定数值后(百分比)进行系统通知
任务托盘
支持托盘图标
更多功能你们在源码中进行添加吧,如果可以,推送源码,我们一起完善这个工具的功能。
源码地址:
https://github.com/iml6yu-tool/HardDiskMonitor
public class HardDiskHelper
{
///
/// 获取硬盘已经使用百分比
///
///
///
public static float GetUsedPercnet(string hardDiskName)
{
var total = GetHardDiskSpace(hardDiskName);
var free = GetHardDiskFreeSpace(hardDiskName);
var result = (total- free) * 1f / total;
return result;
}
///
/// 获取指定驱动器的空间总大小(单位为GB)
///
/// 只需输入代表驱动器的字母即可
///
public static long GetHardDiskSpace(string hardDiskName)
{
long totalSize = new long();
System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
foreach (System.IO.DriveInfo drive in drives)
{
if (drive.Name == hardDiskName)
{
totalSize = drive.TotalSize / (1024 * 1024 * 1024);
}
}
return totalSize;
}
///
/// 获取指定驱动器的剩余空间总大小(单位为GB)
///
/// 只需输入代表驱动器的字母即可
///
public static long GetHardDiskFreeSpace(string hardDiskName)
{
long freeSpace = new long();
System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
foreach (System.IO.DriveInfo drive in drives)
{
if (drive.Name == hardDiskName)
{
freeSpace = drive.TotalFreeSpace / (1024 * 1024 * 1024);
}
}
return freeSpace;
}
}
public class SettingHelper
{
///
/// 将本程序设为开启自启
///
/// 自启开关
///
public static bool SetMeStart(bool onOff)
{
bool isOk = false;
string appName = Process.GetCurrentProcess().MainModule.ModuleName;
string appPath = Process.GetCurrentProcess().MainModule.FileName;
isOk = SetAutoStart(onOff, appName, appPath);
return isOk;
}
///
/// 将应用程序设为或不设为开机启动
///
/// 自启开关
/// 应用程序名
/// 应用程序完全路径
public static bool SetAutoStart(bool onOff, string appName, string appPath)
{
bool isOk = true;
//如果从没有设为开机启动设置到要设为开机启动
if (!IsExistKey(appName) && onOff)
{
isOk = SelfRunning(onOff, appName, @appPath);
}
//如果从设为开机启动设置到不要设为开机启动
else if (IsExistKey(appName) && !onOff)
{
isOk = SelfRunning(onOff, appName, @appPath);
}
return isOk;
}
///
/// 判断注册键值对是否存在,即是否处于开机启动状态
///
/// 键值名
///
public static bool IsExistKey(string keyName)
{
try
{
bool _exist = false;
RegistryKey local = Registry.LocalMachine;
RegistryKey runs = local.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
if (runs == null)
{
RegistryKey key2 = local.CreateSubKey("SOFTWARE");
RegistryKey key3 = key2.CreateSubKey("Microsoft");
RegistryKey key4 = key3.CreateSubKey("Windows");
RegistryKey key5 = key4.CreateSubKey("CurrentVersion");
RegistryKey key6 = key5.CreateSubKey("Run");
runs = key6;
}
string[] runsName = runs.GetValueNames();
foreach (string strName in runsName)
{
if (strName.ToUpper() == keyName.ToUpper())
{
_exist = true;
return _exist;
}
}
return _exist;
}
catch
{
return false;
}
}
///
/// 写入或删除注册表键值对,即设为开机启动或开机不启动
///
/// 是否开机启动
/// 应用程序名
/// 应用程序路径带程序名
///
private static bool SelfRunning(bool isStart, string exeName, string path)
{
try
{
RegistryKey local = Registry.LocalMachine;
RegistryKey key = local.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
if (key == null)
{
local.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
}
//若开机自启动则添加键值对
if (isStart)
{
key.SetValue(exeName, path);
key.Close();
}
else//否则删除键值对
{
string[] keyNames = key.GetValueNames();
foreach (string keyName in keyNames)
{
if (keyName.ToUpper() == exeName.ToUpper())
{
key.DeleteValue(exeName);
key.Close();
}
}
}
}
catch (Exception ex)
{
string ss = ex.Message;
return false;
//throw;
}
return true;
}
}
这是一个用了2个小时写完的小工具,很多命名都不符合规则,但是着急使用,所以如果当你在看源代码的时候出现混沌的情况,请关注公众号回复 “联系作者” ,能够得到更多的介绍和说明