Windows C# 实现linux dd 命令

2024-03-23

我正在编写一个在 Windows 上运行的 C#.Net 应用程序,它需要拍摄可移动磁盘的映像并将其放入 Linux Live USB 上。 Live USB 被插入目标机器并启动,启动时它会运行一个脚本,该脚本使用 dd 命令,如下所示将其闪存到另一个驱动器上:

dd if=/path/to/file/from/csharp/program of=/dev/sdX

我遇到的问题是在 Windows 端创建图像。我已经使用 dd 在 Linux 系统上创建的文件尝试了 Live Linux,效果很好,但我需要能够在 Windows 上的 C#.Net 应用程序中创建这些文件。我不想依赖 cygwin 或其他一些依赖项,因此尝试使用 Win32 CreateFile 函数来打开物理设备。

调用 CreateFile 时将第一个参数设置为“\.\F:”(如果 F: 是我想要映像的驱动器),如下所示:

SafeFileHandle TheDevice = CreateFile(_DevicePath, (uint)FileAccess.Read, (uint)(FileShare.Write | FileShare.Read | FileShare.Delete), IntPtr.Zero, (uint)FileMode.Open, (uint)FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero);
if (TheDevice.IsInvalid) 
{ 
    throw new IOException("Unable to access drive. Win32 Error Code " + Marshal.GetLastWin32Error()); 
}
FileStream Dest = System.IO.File.Open(_SaveFile, FileMode.Create);
FileStream Src = new FileStream(TheDevice, FileAccess.Read);
Src.CopyTo(Dest);
Dest.Flush();
Src.Close();
Dest.Close();

但是,当使用 Live Linux USB 将输出文件 dd 回磁盘时,结果并不符合预期(磁盘不可启动等,但通过在十六进制编辑器中检查输出文件,看起来有一个MBR 开头等)。

这是字节顺序的问题吗?还是我应该使用 FileStream 以外的其他方法将数据复制到文件中。

或者有一个 Windows 源代码的 dd 示例(C# 或 C++,我查看了 Delphi 的http://www.chryscome.net/dd http://www.chrysocome.net/dd并且不完全理解它或者没有一个像样的 Delphi IDE 来分离代码)所以我可以看看它是如何工作的?

更新/编辑:

以下是 dd 输出包含的前 512 个字节的十六进制字符串:

33 C0 FA 8E D8 8E D0 BC 00 7C 89 E6 06 57 8E C0 FB FC BF 00 06 B9 00 01 F3 A5 EA 1F 06 
00 00 52 52 B4 41 BB AA 55 31 C9 30 F6 F9 CD 13 72 13 81 FB 55 AA 75 0D D1 E9 73 09 66 
C7 06 8D 06 B4 42 EB 15 5A B4 08 CD 13 83 E1 3F 51 0F B6 C6 40 F7 E1 52 50 66 31 C0 66 
99 E8 66 00 E8 21 01 4D 69 73 73 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 
65 6D 2E 0D 0A 66 60 66 31 D2 BB 00 7C 66 52 66 50 06 53 6A 01 6A 10 89 E6 66 F7 36 F4 
7B C0 E4 06 88 E1 88 C5 92 F6 36 F8 7B 88 C6 08 E1 41 B8 01 02 8A 16 FA 7B CD 13 8D 64 
10 66 61 C3 E8 C4 FF BE BE 7D BF BE 07 B9 20 00 F3 A5 C3 66 60 89 E5 BB BE 07 B9 04 00 
31 C0 53 51 F6 07 80 74 03 40 89 DE 83 C3 10 E2 F3 48 74 5B 79 39 59 5B 8A 47 04 3C 0F 
74 06 24 7F 3C 05 75 22 66 8B 47 08 66 8B 56 14 66 01 D0 66 21 D2 75 03 66 89 C2 E8 AC 
FF 72 03 E8 B6 FF 66 8B 46 1C E8 A0 FF 83 C3 10 E2 CC 66 61 C3 E8 62 00 4D 75 6C 74 69 
70 6C 65 20 61 63 74 69 76 65 20 70 61 72 74 69 74 69 6F 6E 73 2E 0D 0A 66 8B 44 08 66 
03 46 1C 66 89 44 08 E8 30 FF 72 13 81 3E FE 7D 55 AA 0F 85 06 FF BC FA 7B 5A 5F 07 FA 
FF E4 E8 1E 00 4F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 72 
72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 19 16 9F 29 00 00 80 01 01 00 06 FE 3F 0E 3F 00 00 00 61 C8 03 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA

这是我的代码产生的结果:

EB 76 90 4D 53 44 4F 53 35 2E 30 00 02 04 04 00 02 00 02 00 00 F8 F2 00 3F 00 FF 00 3F 
00 00 00 61 C8 03 00 80 00 29 7A E8 21 04 4E 4F 20 4E 41 4D 45 20 20 20 20 46 41 54 31 
36 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 E9 05 01 B4 0E 53 33 DB CD 10 5B C3 8A 07 3C 00 74 06 E8 EE FF 43 EB F4 C3 
0D 4E 6F 20 42 50 42 3A 20 43 61 6E 27 74 20 62 6F 6F 74 20 75 73 69 6E 67 20 43 48 53 
20 66 75 6E 63 74 69 6F 6E 73 00 50 B0 2E E8 BC FF 58 33 DB 8E 06 E4 01 F6 06 DC 01 02 
75 42 F6 06 DC 01 04 75 07 80 3E E8 01 80 72 34 53 53 52 50 06 53 55 6A 10 8B F4 52 50 
8A 16 E8 01 B8 00 42 F9 CD 13 8A EC 58 5A 8D 64 10 72 14 80 FD 00 75 0F 03 C5 83 D2 00 
C3 BB 91 00 E8 78 FF F4 EB FD 83 3E 18 00 00 74 F0 52 50 8B CD F7 36 18 00 8B F2 03 D1 
3B 16 18 00 76 06 8B 0E 18 00 2B CE 33 D2 F7 36 1A 00 88 16 E9 01 8B F8 8B D7 51 8A C1 
8D 4C 01 C0 E6 06 0A CE 8A EA 8B 16 E8 01 B4 02 CD 13 59 73 15 80 FC 09 75 0A 49 EB DE 
8A C4 04 30 E8 18 FF B4 00 CD 13 EB D1 58 5A 03 C1 83 D2 00 2B E9 74 07 C1 E1 09 03 D9 
EB 94 C3 00 00 00 00 FA FC E8 00 00 5E 81 EE 85 01 2E 8B 84 E4 01 8E D8 8E C0 8E D0 2E 
C7 84 7C 01 AF 01 2E 89 84 7E 01 B9 00 01 BF 00 00 F3 2E A5 2E FF AC 7C FF BC 00 0A FB 
80 3E E8 01 FF 75 04 88 16 E8 01 83 06 E4 01 20 A1 E0 01 8B 16 E2 01 BD 02 00 E8 E9 FE 
50 52 EB 74 90 00 00 00 00 00 00 00 00 00 00 00 D3 20 00 00 00 30 80 00 FF 00 68 41 00 
40 09 FF 40 5A AC 04 00 00 AC 04 00 00 00 00 12 00 55 AA

这是从完全相同的 CF 卡中获取的,没有进行任何编辑/写入等操作,所以我很困惑为什么它们如此不同,但两者都以正确的 55 AA 字节结尾。当以这种方式访问​​卡上的 MBR 时,Windows 是否会损坏卡上的 MBR,或者是否发生了一些我不知道的其他奇怪的事情?


我认为你所拥有的应该可以工作 - 我自己使用可启动软盘映像尝试过这一点(使用安装为虚拟驱动器)ImDisk http://www.ltr-data.se/opencode.html/#ImDisk)并且生成的文件与原始图像是相同的二进制文件。

为了完整起见,这里是我使用的代码(完整):

using System;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;

namespace ConsoleApplication1
{
    public class Program
    {
        const int FILE_ATTRIBUTE_SYSTEM = 0x4;
        const int FILE_FLAG_SEQUENTIAL_SCAN = 0x8;

        [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        public static extern SafeFileHandle CreateFile(string fileName, [MarshalAs(UnmanagedType.U4)] FileAccess fileAccess, [MarshalAs(UnmanagedType.U4)] FileShare fileShare, IntPtr securityAttributes, [MarshalAs(UnmanagedType.U4)] FileMode creationDisposition, int flags, IntPtr template);

        [STAThread]
        static void Main()
        {
            using (SafeFileHandle device = CreateFile(@"\\.\E:", FileAccess.Read, FileShare.Write | FileShare.Read | FileShare.Delete, IntPtr.Zero, FileMode.Open, FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero))
            {
                if (device.IsInvalid)
                {
                    throw new IOException("Unable to access drive. Win32 Error Code " + Marshal.GetLastWin32Error());
                }
                using (FileStream dest = File.Open("TempFile.bin", FileMode.Create))
                {
                    using (FileStream src = new FileStream(device, FileAccess.Read))
                    {
                        src.CopyTo(dest);
                    }
                }
            }
        }
    }
}

如果这不起作用,那么似乎表明:

  1. 原图有问题。
  2. 问题出在使用您刚刚编写的磁盘映像的任何内容上。
  3. 在处理您正在访问的特定设备方面存在一些细微的差异(尽管我想不出是什么)

最有可能的罪魁祸首是步骤 2。您对生成的磁盘映像到底做了什么?


Update:这是写在评论中的,但为了完整起见,我想我应该将其添加到我的答案中 - 看起来发生的情况是正在写入磁盘第一个分区的内容,而需要的是整个磁盘。

当您查看第二个十六进制字符串(由示例代码生成的字符串)时,类似于HxD http://mh-nexus.de/en/hxd/我们看到这个:

ëv.MSDOS5.0..........øò.?.ÿ.?...aÈ..€.)zè!.NO NAME    FAT16   ..
........................................................é..´.S3Û
Í.[Ê.<.t.èîÿCëôÃ.No BPB: Can't boot using CHS functions.P°.è¼ÿX
3ÛŽ.ä.ö.Ü..uBö.Ü..u.€>è.€r4SSRP.SUj.‹ôRPŠ.è.¸.BùÍ.ŠìXZ.d.r.€ý.u.
.ŃÒ.û‘.èxÿôëýƒ>...tðRP‹Í÷6..‹ò.Ñ;...v.‹...+Î3Ò÷6..ˆ.é.‹ø‹×QŠÁ.
L.Àæ..Ίê‹.è.´.Í.Ys.€ü.u.IëÞŠÄ.0è.ÿ´.Í.ëÑXZ.ÁƒÒ.+ét.Áá..Ùë”Ã....
úüè..^.î…..‹„ä.ŽØŽÀŽÐ.Ç„|.¯..‰„~.¹..¿..ó.¥.ÿ¬|ÿ¼..û€>è.ÿu.ˆ.è.ƒ.
ä. ¡à.‹.â.½..èéþPRët............Ó ...0€.ÿ.hA.@.ÿ@Z¬...¬.......Uª

在我看来这就像FAT16 分区的引导扇区 http://support.microsoft.com/kb/140418- 开头附近出现的字符串“MSDOS5.0”、“NO NAME”和“FAT16”是一个致命的泄露。

将其与第一个十六进制字符串(由 dd 生成的字符串)的输出进行比较:

3ÀúŽØŽÐ¼.|‰æ.WŽÀûü¿..¹..ó¥ê....RR´A»ªU1É0öùÍ.r..ûUªu.Ñés.fÇ...´B
ë.Z´.Í.ƒá?Q.¶Æ@÷áRPf1Àf™èf.è!.Missing operating system...f`f1Ò».
|fRfP.Sj.j.‰æf÷6ô{Àä.ˆáˆÅ’ö6ø{ˆÆ.áA¸..Š.ú{Í..d.faÃèÄÿ¾¾}¿¾.¹ .ó¥
Ãf`‰å»¾.¹..1ÀSQö.€t.@‰ÞƒÃ.âóHt[y9Y[ŠG.<.t.$.<.u"f‹G.f‹V.f.Ðf!Òu.
f‰Âè¬ÿr.è¶ÿf‹F.è ÿƒÃ.âÌfaÃèb.Multiple active partitions...f‹D.f.
F.f‰D.è0ÿr..>þ}Uª.….ÿ¼ú{Z_.úÿäè..Operating system load error...^
¬´.Š>b.³.Í.<.uñÍ.ôëý......................................Ÿ)..€.
...þ?.?...aÈ..................................................Uª

我们看到的东西在我看来很像主引导记录 http://en.wikipedia.org/wiki/Master_boot_record。为什么?因为在 MBR 中,所有前 440 个字节都是引导代码,与包含独特 BIOS 参数块的 FAT 引导扇区不同(上面看起来像垃圾,但如果你将其通过反汇编程序,你会得到看起来像有效 16 位的东西代码)。

此外,这两个看起来都是有效且完全不同的引导扇区(带有错误消息)。编程错误不可能“破坏”一个看起来像另一个——它一定只是读取了错误的内容。


为了得到CreateFile要返回磁盘而不是分区,看起来您只需要向其传递一个不同的字符串,例如@"\\.\PhysicalDrive0"打开第一个物理磁盘。

See:

  • 低级磁盘访问 http://social.msdn.microsoft.com/Forums/en-GB/vcgeneral/thread/0115e999-95bc-4ae8-83e6-4ad5688e095f
  • 信息:Win32 下的直接驱动器访问 http://support.microsoft.com/kb/100027
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows C# 实现linux dd 命令 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • nginx,上游,cors 失败

    无法理解为什么我的上游 CORS 配置失败 这阻碍了一些本地开发和测试 我得到了一个请求的资源上不存在 Access Control Allow Origin 标头当发出 API 请求时local mysite com 8081 to ev
  • 如何使用 ADO.NET 读取 .XLSX (Excel 2007) 文件?我发现“无法找到可安装的 ISAM”错误

    我需要工作于 net 2 0 所以我不能使用 OpenXML 这是我的源代码 我已经安装了AccessDatabaseEngine exe 但仍然遇到异常 找不到可安装的 ISAM 我也尝试过 Extended Properties Exc
  • 如何在编译时运行“npm install”等 bash 命令

    我需要跑npm install gulp build在我的里面static semantic ui文件夹 因此它创建了所需的css file 我看到这个例子Setup hs https github com nakaji dayo yeso
  • JMeter - 使用其他 BeanShell 预处理器/后处理器中的变量?

    有没有一种方法可以将变量从一个 BeanShell 预处理器 后处理器引用到另一个 BeanShell 处理器 它们在同一个线程组内 如果我在 HTTP 请求下的 BeanShell 预处理器内创建一个字符串变量 那么我可以在同一 HTTP
  • 使用 C#/Linq 将扁平化分层数据从 SQL Server 转换为结构化 JSON 对象

    我正在开发一个 MVC 应用程序 它从 SQL Server 中的表中检索数据 其结构如下 Id Name Hierarchy Depth 01 Justin 0 02 Chris 1 1 03 Beth 1 1 2 中的示例数据Hiera
  • ggplot 堆叠条形图每个月的前 5 名

    我有一个很好的 我已经思考这个问题很长时间了 我有这个数据集 这个数据集可能很大 我想根据每月前 5 个最高计数绘制 ggplot 堆栈条形图 例如 对于 1 1 2012 最高计数将为 I G F D 和 E df Date Desc c
  • 使用 ggplot 绘制具有多个预测变量的模型的一个预测变量

    这是线性模型和 ggplot 的典型示例 require ggplot2 utils data anorexia package MASS anorex 1 lt glm Postwt Prewt Treat offset Prewt fa
  • C++ 的属性和反射库?

    大多数成熟的 C 项目似乎都有自己的反射和属性系统 即用于定义可以通过字符串访问并自动序列化的属性 至少我参与的很多C 项目似乎都是这样的重新发明轮子 你知道任何好的开源库对于支持反射和属性容器的 C 具体来说 通过宏定义 RTTI 和属性
  • 包中涉及std::transform的Rcpp代码的兼容性

    我正在完成我一直在做的一个包 所有检查看起来都很好 并且在我的计算机上编译没有问题 win builder包裹也没有问题 作为进一步检查 我尝试在同事的计算机上从源代码安装 但失败了 问题来自于我从中获取的 Rcpp 函数Rcpp 中关于向
  • 内容解析器的使用

    我是 android 领域的新手 正处于学习阶段 我有几个疑问 每个应用程序是否有单个 ContentResolver 对象 它是一个单例对象吗 谁管理这个对象的生命周期 如果是单例 它如何处理查询ContentProvider的多个请求
  • C11编译器一致性比较

    是否有任何网站可以比较实现 编译器之间当前的 C11 标准一致性 支持 gcc clang 英特尔 open64 pelles 据我所知 没有通用网站 现在是开始建立一个网站的好时机 然而 大多数项目都有自己的列表 http clang l
  • 子项目中的 Cocoapods

    我有一个带有子项目的项目 子项目和主项目都必须使用Cocoapods来集成一个库 如果没有Cocoapods 似乎无法集成 所以我为主项目及其子项目设置了 Cocoapods 子项目在其生成的工作区中构建 但编译主项目会产生以下错误 ld
  • 如何使标签文本左右对齐以具有相同的对齐方式?

    我使用 html 和 CSS 处理模板 我面临的问题是我无法使左右对齐标签文本相同 作为例子 提交日期和员工 ID 不是从左侧的同一点开始 因此我需要左侧的所有文本都具有相同的对齐方式 同样在右侧 文本也不是从与 和 相同的点开始 所以我需
  • 具有自定义比较器的 Java PriorityQueue

    我正在使用 PriorityQueue 和我自己的比较器 但不知何故 最终结果并不总是好的 我应该按平均成绩 姓名 身份证号码排序 最后它应该返回有序队列中剩余的名称 其余的名称都可以 但顺序不同 输入 姓名 平均成绩 id no add
  • 如何打印密码组合(但每个索引都有自定义约束)

    我正在尝试构建一个动态密码恢复工具 您可以指定密码以及与未知密码索引对应的未知字符列表 因此 如果您记住了 90 的密码 并且记不住几个字母 这将为您提供轻量级的暴力破解 我能够将用户提供的密码与未知字符列表结合起来 但是 我一直试图打印每
  • 禁用 mp3 自动播放

    我尝试禁用自动播放但没有成功 这是我的代码 失败的尝试 去除autoplay完全地 改变autoplay to autostart and AutoStart setting autoplay autostart AutoStart to
  • Reactable R - 将每页最大行数从 10 更改为 5

    我想将每页可反应的行数限制为 10 到 5 这是一个可重现的示例 set seed 250 df lt tibble x sample x 1 20 reactable df 现在 当您运行此代码时 会出现两页 每页 10 行 我想要四页
  • 正则表达式将 npm 库排除在缩小范围之外

    我必须为 websockets 使用非开源发布 订阅库 扩散 https www npmjs com package diffusion v 5 9 2 并且必须坚持使用特定版本 因为它是在服务器端使用的 我无法控制它 问题在于 在其代码库
  • 无法在 asp.net 中的 webmethod 中获取会话

    我只是发现问题与webmethod无关 这是由另一个问题引起的 我设置了Session PhotoId 在正常的 aspx 中 但我无法检索其中的值webMethodaspx 页面的 WebMethod EnableSession true
  • Windows C# 实现linux dd 命令

    我正在编写一个在 Windows 上运行的 C Net 应用程序 它需要拍摄可移动磁盘的映像并将其放入 Linux Live USB 上 Live USB 被插入目标机器并启动 启动时它会运行一个脚本 该脚本使用 dd 命令 如下所示将其闪