- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个安装 Windows 镜像的 C# 应用程序。我必须在用户界面上选择系统将复制到的磁盘(C: 或 D: 或...)。为此,没关系。
然后我必须格式化磁盘。我必须使用 diskpart.exe 选择与 C: 关联的良好物理磁盘。但是对于 diskpart,我们选择带有编号的磁盘:选择磁盘 0 或 1 或 ...
如何将好盘号与用户在界面上选择的盘符联系起来?
我在谷歌上找不到任何东西。我试图用 wmi Win32_DiskDrive
查找信息,但与 diskpart detail disk 没有任何共同之处。
谢谢
最佳答案
另一种解决方案而不是使用 ManagementObjectSearcher
正在使用 DiskPart.exe
以编程方式,但我的代码是一个静态解决方案(使用正则表达式会更好)但会工作很长时间。
它需要一个具有更高执行权限的 list 文件(添加新元素>应用程序 list 文件并将requestedExecutionLevel
更改为<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
。更多信息:https://stackoverflow.com/a/43941461/5830773)
然后你可以使用下面的代码来获取带有DiskPart.exe
的驱动器列表。 :
// execute DiskPart programatically
Process process = new Process();
process.StartInfo.FileName = "diskpart.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.StandardInput.WriteLine("list volume");
process.StandardInput.WriteLine("exit");
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
// extract information from output
string table = output.Split(new string[] { "DISKPART>" }, StringSplitOptions.None)[1];
var rows = table.Split(new string[] { "\n" }, StringSplitOptions.None);
for (int i = 3; i < rows.Length; i++)
{
if (rows[i].Contains("Volume"))
{
int index = Int32.Parse(rows[i].Split(new string[] { " " }, StringSplitOptions.None)[3]);
string label = rows[i].Split(new string[] { " " }, StringSplitOptions.None)[8];
Console.WriteLine($@"Volume {index} {label}:\");
}
}
这会像 DiskPart 一样提供以下输出,但您可以根据需要自定义它:
Volume 0 C:\
Volume 1 D:\
Volume 2 F:\
Volume 3 G:\
Volume 4 I:\
Volume 5 H:\
现在按驱动器号搜索是显而易见的:
public int GetIndexOfDrive(string drive)
{
drive = drive.Replace(":", "").Replace(@"\", "");
// execute DiskPart programatically
Process process = new Process();
process.StartInfo.FileName = "diskpart.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.StandardInput.WriteLine("list volume");
process.StandardInput.WriteLine("exit");
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
// extract information from output
string table = output.Split(new string[] { "DISKPART>" }, StringSplitOptions.None)[1];
var rows = table.Split(new string[] { "\n" }, StringSplitOptions.None);
for (int i = 3; i < rows.Length; i++)
{
if (rows[i].Contains("Volume"))
{
int index = Int32.Parse(rows[i].Split(new string[] { " " }, StringSplitOptions.None)[3]);
string label = rows[i].Split(new string[] { " " }, StringSplitOptions.None)[8];
if (label.Equals(drive))
{
return index;
}
}
}
return -1;
}
用法:
Console.WriteLine(GetIndexOfDrive(@"D:\")); // returns 1 on my computer
关于C# 和 diskpart : how to select by disk label and not by a number?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953723/
关于w3total缓存工作机制,我在互联网上搜索,但找不到有关这两个的任何正确信息。w3Total 缓存中的磁盘增强型和磁盘基本型有什么区别?为什么磁盘增强型优于磁盘基本型?使用磁盘增强和磁盘缓存选项
我在启动时一直使用这两种方法,对我来说,功能是相同的。到目前为止,我创建的实例仅用于计算。我想知道 GCE 磁盘镜像和快照在技术方面有何不同,以及在哪种情况下使用其中一种更好。 最佳答案 快照反射(r
我正忙于迁移到 Azure 虚拟机。 我的 SQL Server 数据库 MDF 应该驻留在操作系统磁盘上还是数据磁盘上(据我所知,这是一个页 blob - 也称为 Azure 磁盘驱动器)? 我本以
背景 我一直在使用 Win32_DiskDrive 来查找闪存(USB 笔、SD 卡等),但在其他计算机上进行一些测试后,我发现它们并不总是被发现。因此,我使用 Win32_LogicalDisk,因
我知道 stackoverflow 中也有类似的问题: WIX:default directory in WixUI_InstallDir, WIX installer root directory
如何使用 Golang 包获取 Dispart 详细信息(磁盘名称(例如:磁盘 0)空闲和磁盘使用情况) 最佳答案 您可以使用此包 github.com/shirou/gopsutil 获取 disk
我希望能够确定CD驱动器中的音乐专辑CD。例如,如果某人声称驱动器中的CD是Eminem-Eminem Show,那么我希望能够验证CD确实是The Eminem Show。 有任何想法吗?我已经申请
我需要对文件执行随机更新。让我需要更新偏移量 k1、k2、....、kn 处的文件。从性能的角度来看,如果我按任何顺序写入是否重要,或者如果我按偏移量的递增顺序写入,性能会提高吗?更具体地说,我将在
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
我准备发布一个只对普通硬盘有效的工具,而不是 SSD(固态硬盘)。事实上,它不应该与 SSD 一起使用,因为它会导致大量读/写而没有实际效果。 任何人都知道检测给定驱动器是否为固态的方法? 最佳答案
NSWorkspaceDidMountNotification 可以很好地获取刚刚安装的磁盘的信息。但是如何在我的应用程序启动之前获取已经安装的磁盘的信息? 命令行:“diskutil list”和“
NSWorkspaceDidMountNotification 可以很好地获取刚刚安装的磁盘的信息。但是如何在我的应用程序启动之前获取已经安装的磁盘的信息? 命令行:“diskutil list”和“
我想知道为什么我的模拟器不断增加它在磁盘上的大小。否则它的运行速度比第一次慢。有什么解决办法吗?我不希望我的模拟器也保存它的状态。这个怎么做? 最佳答案 我发现从设置>存储>释放空间从模拟器手机中删除
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我想知道,是否有某种类型的光盘 ID 可以用来在我的数据库中搜索以查看该光盘是否已被扫描?所有光盘都是由我创建的,通常在 Windows 上刻录。 -编辑-我可以比较写入时间和卷标以查看光盘是否已被扫
fmdb 文档说,如果您将文件系统路径传递给databaseWithPath:它将为您创建一个文件: 文件系统路径。该文件不必存在于磁盘上。如果它不存在,则会为您创建。 我正在使用以下代码获取我的文件
在 Azure 中创建 Windows Server 虚拟机后,我注意到操作系统磁盘(C: 驱动器)大小只有 30GB。 我的印象是所有新虚拟机都有 127GB 操作系统磁盘大小。 (Expand t
我在Google dataproc中默认设置(4个vCPU,15GB Ram)创建了一个群集。 在完成几次养 pig 工作后,集群中有2-3个不健康的节点。 因此,我升级了工作虚拟机的vCPU(4至8
有人可以解释一下在以下上下文中刷新到磁盘的含义吗?如果我将数据写入文件系统上的日志,这是否意味着我将其放在磁盘上?在什么时候您会/应该将文件刷新到磁盘? This suggests a design
下面的输出属于 FAT32 磁盘文件。我想用 C 程序显示所有文件以及每个文件相应分配的扇区。 按照指南我什至无法找到根目录。 (示例1 - 在http://www.tavi.co.uk/phobos
我是一名优秀的程序员,十分优秀!