- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个基本的诊断工具来向高级用户展示他们计算机中的瓶颈所在(因此他们明白获得更多内存/更快的处理器并不能解决他们的问题)。到目前为止,我一直相当依赖 .NET 环境中的性能计数器类,并且它运行良好。
然而,在使用逻辑磁盘驱动器时,我遇到了一个小问题。在我的计算机上,我有一个用于办公室共享文档驱动器 (Z) 的网络驱动器,但是性能计数器将该驱动器称为“HarddiskVolume2”。我知道这实际上是逻辑驱动器的名称,“Z:”的别名实际上只是为了用户的利益,但如果我离开它,用户将不知道“HarddiskVolume2”是什么。
有没有办法使用任何系统调用将“HarddiskVolume2”翻译成“Z”?
最佳答案
如果您想查看所有映射驱动器及其解析路径的列表:
Console.WriteLine(String.Join(Environment.NewLine,
GetUNCDrives().Select(kvp =>
string.Format("{0} => {1}", kvp.Key, kvp.Value))));
如果您想获得路径的可能较短分辨率的列表:
var longPath = @"\\HarddiskVolume2\ent\RRPSTO\foobar\file.txt";
Console.WriteLine(string.Join(Environment.NewLine, GetShortPaths(longPath)));
如果您假设只有一个映射驱动器分辨率,您可以只选择第一个:
var shortPaths = GetShortPaths(longPath);
var path = shortPaths.Length > 0 ? shortPaths[0] : longPath;
或者您可以根据网络 map 的深度从列表中进行选择。因此,要获得最短映射路径(不是最短路径名),您只需计算路径中有多少个“/”即可。
或者您可以作弊,只选择具有最短路径名的那个。不过,这不能保证是最简单的路径。
无论您想怎么做,下面的代码都是让上面的代码工作的原因。你需要这些人:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.IO;
并且您还需要在项目引用中包含 System.Management.dll
。
代码:
/// <summary>Gets array of all possible shorter paths for provided path.</summary>
/// <param name="path">The path to find alternate addresses for.</param>
static string[] GetShortPaths(string path)
{
return GetUNCDrives()
.Where(kvp => path.StartsWith(kvp.Value))
.Select(kvp => Path.Combine(kvp.Key, path.Substring(kvp.Value.Length + 1)))
.ToArray();
}
/// <summary>Gets all mapped drives and resolved paths.</summary>
/// <returns>Dictionary: Key = drive, Value = resolved path</returns>
static Dictionary<string, string> GetUNCDrives()
{
return DriveInfo.GetDrives()
.Where(di => di.DriveType == DriveType.Network)
.ToDictionary(di => di.RootDirectory.FullName
, di => GetUNCPath(di.RootDirectory.FullName.Substring(0, 2)));
}
/// <summary>Attempts to resolve the path/root to mapped value.</summary>
/// <param name="path">The path to resolve.</param>
static string GetUNCPath(string path)
{
if (path.StartsWith(@"\\"))
return path;
var mo = new ManagementObject(string.Format("Win32_LogicalDisk='{0}'", path));
return Convert.ToUInt32(mo["DriveType"]) == (UInt32)DriveType.Network
? Convert.ToString(mo["ProviderName"])
: path;
}
关于c# - 将低级磁盘名称转换为高级磁盘名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35460810/
如何在页面内容对象流内的 PDF 页面上居中对齐文本。 从这个开始: q 0 Tr /Helv 12 Tf BT 1 0 0 1 10 10 Tm (Hello)Tj
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我正在尝试用简单的工具编写自己的 printf。 这是 printf.c 的代码: #include "printf.h" uint8 pos_x=0, pos_y=0; void printf(ch
我正在尝试在 PDF 中呈现文本。我可以渲染基于矢量的图形,但我也想用文本来陪伴它。 在下面提供的测试代码中,文件(保存为 .pdf 时)将通过矢量图形绘制在左上角显示“测试”。 我想使用以下基于文本
有没有办法在比标准的“lua_pcall”函数调用更细粒度的级别上从 C/C++ 程序运行 Lua 代码?理想情况下,我希望能够遍历一系列低级字节码指令(假设它有这样的东西)并一个一个地运行它们,这样
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
这个问题在这里已经有了答案: Is short-circuiting logical operators mandated? And evaluation order? (7 个答案) 关闭 9 年
我想在 C# 中的单独线程上运行低级键钩来检测某些热键。我该怎么做? 最佳答案 如果你只需要这个键盘钩子(Hook)来检测热键,那么你不应该使用钩子(Hook)。 Windows 通过 Registe
我的应用程序索引最终用户计算机上所有硬盘驱动器的内容。我正在使用 Directory.GetFiles 和 Directory.GetDirectories 递归处理整个文件夹结构。我仅索引了几种选定
我们正在尝试通过多部分文件上传过程上传文件。通过使用下面给出的代码: while (!feof($file)) { $result = $s3->uploadPart(array( 'Buck
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在使用 STM32CubeMX 为 STM32F103 微 Controller 创建一个空白项目。使用 HAL 驱动程序(默认),我得到了一个运行速度非常快的闪烁示例,但我想尝试 LL(低级)驱
如何使用 GoogleAppEngine Low Level API 自动将实体 (com.google.appengine.api.datastore.Entity) 读取到对象中? 有没有什么神奇
我正在寻找在 Tensorflow 中使用 LSTM 单元的 RNN 的低级实现。我已经实现了几个使用低级 API 的前馈网络。这对我理解 ANN 的内部工作原理有很大帮助。我可以对 RNN 做同样的
更新:如果代码:我刚刚成功击败了自己的 32: void test(char *file_char, unsigned int size) { char* file_ = file_char;
作为一个小型(大型)业余爱好项目,我着手用 C# 制作一个(非常原始的)ssh-2.0 客户端。这是为了探索和更好地理解 DH 并帮助提高我对加密的熟悉度:) 根据 RFC 4253,我已经开始这样的
我正在尝试使用 Fuse 低级 API 实现基本文件系统。用于基本的读/写/mknod 操作。如果有人能指出一些示例,将不胜感激,没有关于 fuse 低级 api 的文档。 任何帮助将不胜感激! 最佳
我所拥有的是直接访问 Atmel CPU 上的四个 JTAG 接口(interface)引脚。 我需要的是低级 C 代码来调整这些引脚并实现两个功能: ReadMemoryWord(address)
我正在开发一个由多个部分组成的程序,这些部分相互构建。第一个程序必须从文件中读取内容并将由空格分隔的内容写入新文件。程序二应该采用这个单词,并根据它是以元音还是辅音开头的规则添加pig latin,并
我想对 yml 文件中的值进行一些处理。有人建议我使用snakeYAML的low-level API以此目的。因此,我使用它编写了一些代码,但由于以下原因,我几乎陷入困境。 这是我编写的代码: pub
我是一名优秀的程序员,十分优秀!