磁盘配额,通过ManagementClass("Win32_DiskQuota")
C#
using System;
using System.Collections.Generic;
using System.Management; namespace ConsoleApp2
{
class Win32DiskQuota
{
private static readonly ManagementClass Win32_DiskQuota = new ManagementClass("Win32_DiskQuota"); internal class DiskQuota
{
private readonly string split_sign_1 = "\",Name=\"";
private readonly string split_sign_2 = "Win32_Account.Domain=\"";
private readonly string split_sign_3 = "Win32_LogicalDisk.DeviceID=\"";
internal long DiskSpaceUsed { get; }
internal long Limit { get; }
internal string QuotaVolume { get; }
internal int Status { get; }
internal string User { get; }
internal long WarningLimit { get; } internal string Username { get; }
internal string Domain { get; }
internal string DeviceID { get; }
internal string Line { get; } internal DiskQuota(PropertyDataCollection oProperties)
{
DiskSpaceUsed = Convert.ToInt64(oProperties["DiskSpaceUsed"].Value);
Limit = Convert.ToInt64(oProperties["Limit"].Value);
QuotaVolume = oProperties["QuotaVolume"].Value.ToString();
Status = Convert.ToInt32(oProperties["Status"].Value);
User = oProperties["User"].Value.ToString();
WarningLimit = Convert.ToInt64(oProperties["WarningLimit"].Value);
{
int i = User.IndexOf(split_sign_1);
if (i >= 0)
{
int pos = i + split_sign_1.Length;
Username = User.Substring(pos, User.Length - pos - 1);
int len1 = split_sign_2.Length;
Domain = User.Substring(len1, i - len1);
}
}
{
int i = QuotaVolume.IndexOf(split_sign_3);
if (i == 0)
{
int len1 = split_sign_3.Length;
DeviceID = QuotaVolume.Substring(len1, QuotaVolume.Length - len1 - 1);
}
}
Line = string.Format("{0} {1}\\{2} {3}/{4}", DeviceID, Domain, Username, DiskSpaceUsed, Limit);
}
}
internal static List<DiskQuota> GetAllUserDiskQuota()
{
List<DiskQuota> ret = new List<DiskQuota>();
ManagementObjectCollection ins = Win32_DiskQuota.GetInstances();
foreach (ManagementObject o in ins)
{
DiskQuota diskQuota = new DiskQuota(o.Properties);
ret.Add(diskQuota);
}
return ret;
} internal static void SetDiskQuota(string DeviceId, string UserName, int LimitGB)
{
ManagementObject oQuota = Win32_DiskQuota.CreateInstance();
if (LimitGB < 0)
{
//oQuota["Status"] = 0;
oQuota["Limit"] = 1 * Math.Pow(1024, 4);//次幂1:K,2:M,3:G,4:T,5:P
oQuota["WarningLimit"] = Convert.ToInt64(10 * Math.Pow(1024, 3));
}
else
{
long limitByte = Convert.ToInt64(LimitGB * Math.Pow(1024, 3));
oQuota["Limit"] = limitByte;
oQuota["WarningLimit"] = limitByte / 2;
}
ManagementObject account = new ManagementObject("Win32_Account.Domain=\"" + Environment.MachineName + "\",Name=\"" + UserName + "\"");
account.Get();
//// get disk object
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceId=\"" + DeviceId + "\"");
disk.Get();
oQuota["QuotaVolume"] = disk;
oQuota["User"] = account;
oQuota.Put();
}
}
}
磁盘配额,通过ManagementClass("Win32_DiskQuota")的更多相关文章
- 磁盘配额-----quota
为什么要使用磁盘配额:为了限制普通用户使用普通磁盘的空间与创建文件的个数等. 不至于个别人的浪费影响所有人的使用. 需要安装quota的软件包. mount -o usrquota,grpquota ...
- <实训|第十三天>linux中ACL权限控制以及磁盘配额,附编译属于自己的linux内核
[root@localhost~]#序言 首先讲讲昨天关于缩容失败,开不机的解决方法:ACL权限也算是一个很重要的知识点,不难,但是很实用:磁盘配额一般不需要自己弄,但是要懂得原理.剩下的就是编译属于 ...
- ★Linux磁盘配额的使用 ★——牛刀小试
磁盘配额的作用:限制普通用户使用磁盘的空间和创建文件的个数,不至于因为个别人的浪费而影响所有人的使用 需要用户程序quota软件包 #rpm -qa | grep quota 查看quota软件包安 ...
- Linux用户磁盘配额
一:内核中支持QUOTA: [root@localhost /]# grep CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA ...
- Win2003 Server磁盘配额揭密之补遗篇
Win2003 Server磁盘配额揭密之补遗篇 [ 作者:茶乡浪子 转贴自:it168.com 点击数:5011 更新时间:2005-1-17 ] 执行查看用户的磁盘配额信息 ...
- Win2003 Server磁盘配额揭密之启用篇
Win2003 Server磁盘配额揭密之启用篇 [ 作者:茶乡浪子 转贴自:it168.com 点击数:4973 更新时间:2005-1-17 ] 本文要向大家介绍如何利用W ...
- xfs文件系统磁盘配额
引言 这篇文章简单介绍一下xfs文件系统的磁盘配额配置. 文章目录 0×1.开启分区磁盘配额 0×2.使用xfs_quota命令配置磁盘配额 0×1.开启分区磁盘配额 对于ext4文件以前的文件系统, ...
- Linux磁盘配额实验
1.实现磁盘限额的条件 *需要Linux内核支持 *安装quota软件包2.Linux磁盘限额的特点 作用范围:针对指定 文件系统(分区) 限制对象:普通用户帐号.组帐号 限制类型:磁盘容量(默认单位 ...
- 磁盘配额quota
磁盘配额 1 启用磁盘配额 首先创建新的分区 /dev/sd5,并创建文件系统. [root@local ~]# mkfs.ext4 /dev/sda5 由于xfs 不磁盘配额能成功,这里使用ext4 ...
随机推荐
- Problem D. Country Meow 题解(三分套三分套三分)
题目链接 题目大意 给你n(n<=100)个点,要你找一个点使得和所有点距离的最大值最小值ans 题目思路 一直在想二分答案,但是不会check 这个时候就要换一下思想 三分套三分套三分坐标即可 ...
- C语言讲义——错误处理
errno C语言不提供对错误处理的直接支持. 以返回值的形式表示是否出错. 在发生错误时,大多数的C函数调用返回1或NULL. 同时设置一个错误代码errno(全局变量),表示在函数调用期间发生了错 ...
- Spring Framework 5.0简述
从Spring框架5.0开始,Spring需要JDK 8+ (Java SE 8+),并且已经为JDK 9提供了现成的支持. Spring框架还支持依赖注入(JSR 330)和通用注释(JSR 250 ...
- Guava中EventBus分析
EventBus 1. 什么是EventBus 总线(Bus)一般指计算机各种功能部件之间传送信息的公共通信干线,而EventBus则是事件源(publisher)向订阅方(subscriber)发送 ...
- moviepy音视频剪辑:使用autoTrack、manual_tracking+headblur实现半自动追踪人脸打马赛克
一.引言 在<moviepy1.03音视频剪辑:使用manual_tracking和headblur实现追踪人脸打马赛克>介绍了使用手动跟踪跟踪人脸移动轨迹和使用headblur对人脸进行 ...
- HTTP响应报文应答状态码及含义
本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码,应该是最新最全解释最详尽的,供大家参考:
- [SWPU2019]Web1 空格过滤用/**/ 注释过滤闭合单引号 imformation_schema.columns/tables过滤 用5.7新特性 或无名注入(此处database()不能用)
0x00 知识点 二次注入流程分析 二次注入漏洞在CTF中常见于留言板和注册登录功能,简单来说可以分为两个步骤: 插入恶意数据(发布帖子,注册账号),用mysql_escape_string()函数对 ...
- 安装centos出现的问题
1.配置好之后,点击完成,如果出现"无法创建新虚拟机,无法打开配置文件,D:/... ,拒绝访问" 的错误时: 关闭虚拟机,重新以管理员身份打开.
- Hangfire&Autofac与ASP.NET CORE注入失败
Hangfire.Autofac与ASP.NET CORE注入失败 项目里面使用了Hangfire,因为之前没用过吧,遇到了个问题,就是使用了ico容器后,再用Hangfire总是注入不上对象,总是后 ...
- Day4 Scrum 冲刺博客
线上会议: 昨天已完成的工作与今天计划完成的工作及工作中遇到的困难: 成员姓名 昨天完成工作 今天计划完成的工作 工作中遇到的困难 纪昂学 创建一个Tetromino类来作为7个经典形状的父类 绘制下 ...