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")的更多相关文章

  1. 磁盘配额-----quota

    为什么要使用磁盘配额:为了限制普通用户使用普通磁盘的空间与创建文件的个数等. 不至于个别人的浪费影响所有人的使用. 需要安装quota的软件包. mount -o usrquota,grpquota ...

  2. <实训|第十三天>linux中ACL权限控制以及磁盘配额,附编译属于自己的linux内核

    [root@localhost~]#序言 首先讲讲昨天关于缩容失败,开不机的解决方法:ACL权限也算是一个很重要的知识点,不难,但是很实用:磁盘配额一般不需要自己弄,但是要懂得原理.剩下的就是编译属于 ...

  3. ★Linux磁盘配额的使用 ★——牛刀小试

    磁盘配额的作用:限制普通用户使用磁盘的空间和创建文件的个数,不至于因为个别人的浪费而影响所有人的使用 需要用户程序quota软件包 #rpm -qa | grep quota  查看quota软件包安 ...

  4. Linux用户磁盘配额

    一:内核中支持QUOTA: [root@localhost /]# grep  CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA ...

  5. Win2003 Server磁盘配额揭密之补遗篇

    Win2003 Server磁盘配额揭密之补遗篇 [ 作者:茶乡浪子    转贴自:it168.com    点击数:5011    更新时间:2005-1-17  ]   执行查看用户的磁盘配额信息 ...

  6. Win2003 Server磁盘配额揭密之启用篇

    Win2003 Server磁盘配额揭密之启用篇 [ 作者:茶乡浪子    转贴自:it168.com    点击数:4973    更新时间:2005-1-17  ]   本文要向大家介绍如何利用W ...

  7. xfs文件系统磁盘配额

    引言 这篇文章简单介绍一下xfs文件系统的磁盘配额配置. 文章目录 0×1.开启分区磁盘配额 0×2.使用xfs_quota命令配置磁盘配额 0×1.开启分区磁盘配额 对于ext4文件以前的文件系统, ...

  8. Linux磁盘配额实验

    1.实现磁盘限额的条件 *需要Linux内核支持 *安装quota软件包2.Linux磁盘限额的特点 作用范围:针对指定 文件系统(分区) 限制对象:普通用户帐号.组帐号 限制类型:磁盘容量(默认单位 ...

  9. 磁盘配额quota

    磁盘配额 1 启用磁盘配额 首先创建新的分区 /dev/sd5,并创建文件系统. [root@local ~]# mkfs.ext4 /dev/sda5 由于xfs 不磁盘配额能成功,这里使用ext4 ...

随机推荐

  1. FL Studio——电音编曲人的奠基石

    随着近年来摇滚.电音的发展,越来越多的人开始对电子音乐编曲感兴趣,而电音编曲的首要条件,就是需要一个好的DAW(数字音频工作站),常用的DAW有很多,例如Cubase.Nuendo.Pro Tools ...

  2. [BUGCASE]FixedDataTable表格数据渲染错误

    一.问题描述 广告配置中绑定第三方规格ID表格数据,有一部分展示错乱,具体如下: 表格组件使用 Facebook 的 (fixed-data-table) 组件 二.原因分析 1.检查props 先查 ...

  3. Netty源码解析 -- 内存池与PoolArena

    我们知道,Netty使用直接内存实现Netty零拷贝以提升性能, 但直接内存的创建和释放可能需要涉及系统调用,是比较昂贵的操作,如果每个请求都创建和释放一个直接内存,那性能肯定是不能满足要求的. 这时 ...

  4. PADS生成贴片文件

    PADS生成贴片文件 VIEW-BOTTOM VIEW能够使Bottom层正常显示. 1. pastmask_top->Output Devices->Device Setup- 2. 进 ...

  5. 我劝!这位年轻人不讲MVCC,耗子尾汁!

    目录 一.事物的隔离级别与MVCC? 二.Repeatable Read是如何实现的 本文是MySQL专题第15篇,全文近100篇(公众号首发) 三.Read Commited是如何实现的: 本文是M ...

  6. 【VSA】One-shot video-based person re-identification with variance subsampling algorithm

    目录 解决了什么问题 主要贡献和创新点 基本框架 提出的方法 01 variance confidence方差置信度 02 Variance Subsampling Algorithm 方差二次采样算 ...

  7. mySQL入门之多表操作

    外键 初识外键 外键:引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束.(外键用于建立和加强两个表数据之间的连接,保证数据的完整和统一性) 主表:被引用的表 从表:引用外键的表 -- ...

  8. 编写测试用例 QQ账号6--10位自然数 某城市电话号码 126邮箱注册功能

  9. PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型中的项以及索引

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 QStandardItemModel有两种构造方法: QStandardItemModel ...

  10. 第14.7节 Python模拟浏览器访问实现http报文体压缩传输

    一. 引言 在<第14.6节 Python模拟浏览器访问网页的实现代码>介绍了使用urllib包的request模块访问网页的方法.但上节特别说明http报文头Accept-Encodin ...