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. G - Pyramid 题解(打表)

    题目链接 题目大意 t组数据,给你一个n(n<=1e9)求高度为n的等边三角形,求里面包含了多少个等边三角形 题目思路 打表找规律,然而我一直没找到规律. 看到题解恍然大悟,答案就是C(n+3, ...

  2. NetSuite实现pdf打印中的条形码的功能

    2020-11-27 提起NS,在程序员这一块应该不怎么被人知道,算是比较小众的一门技术了,毕竟Netsuite兴起的时间算不上早,进入中国的时间更晚,除了从事这一块的程序员,可能都没有见过,恰好我是 ...

  3. maven依赖问题的出现原因与解决方式

    摘要 maven依赖问题作为开发者应该是经常遇到的问题,在个人单独开发单独维护的项目里,可能体现不那么明显,一是自己对导入的jar大部分都很明确,二是出现问题第一解决发现也很快,问题就没那么严重,而在 ...

  4. 偏微分方程数值解法的MATLAB源码

    原文出处http://wenku.baidu.com/view/df412e115f0e7cd184253653.html 因为不太喜欢百度文库的格式,所以写到个人博客里面方便使用 <ifram ...

  5. PyQt(Python+Qt)学习随笔:部件的inputMethodHints属性

    inputMethodHints属性只对输入部件有效,输入法使用它来检索有关输入法应如何操作的提示,例如,如果设置了只允许输入数字的标志,则输入法可能会更改其可视组件,以反映只能输入数字.相关取值及含 ...

  6. OA公文流转系统(未完成)

    基本页面比较多,所以就不贴出来了,具体的页面可以自行浏览. 点我进入OA系统浏览界面(未做响应式布局,需电脑端打开) 账号密码: 部门:bumen------bumen 办公室:bangongshi- ...

  7. 使用T4模板动态生成NPoco实体类

    这是一个妥妥的NPoco类,这是我们在工作开发中,手动去写这个实体类,属实非常心累,字段少无所谓一次两次,数量多了,字段多了,就心态裂开

  8. 软工项目WordCount

    1.Github项目地址:https://github.com/JameMo/WordCount-for-C        2.在程序的各个模块的开发上耗费的时间: PSP2.1 Personal S ...

  9. NOI Online #3 提高组 游记

    考的好就来写游记吧 2020.5.24 星期日 上一天晚上为了班里事物做 PPT 肝到 11:30,这比赛就打打玩玩.第二天醒来有点昏昏沉沉的感觉. 打开题面,一看 T1,好像是个性质极其简单的前缀和 ...

  10. protobuf 协议浅析

    目录 Protobuf 协议浅析 1. Protobuf 介绍 1.1 Protobuf 基本概念 1.2 Protobuf 的优点 1.3 Protobuf, JSON, XML 的区别 2. Pr ...