如何找到隐藏驱动器号所需的十六进制值?

如何找到隐藏驱动器号所需的十六进制值?

在本主题中如何在 Windows 7 中为特定用户隐藏驱动器?它讨论了如何隐藏特定用户的驱动器号。我试图遵循 Nathan Hinkle 的答案,但我被卡住了。我需要找到注册表中 3 个不同用户需要使用的 3 个十六进制值。

我需要知道必须使用的十六进制值:

用户 1:禁用驱动器 N,保留其他所有驱动器

用户 2:禁用 M 盘,其他所有盘保持不变

用户 3:禁用驱动器 N 和 M,保留其他所有驱动器

我知道这可能很简单,但我只是不明白如何获取这些值。所以有人能告诉我我需要的 3 个十六进制值吗?此外,如果您觉得需要做一个简短的教程(供将来参考)来说明如何获得这些精确的值,请随意这样做。

请参阅上面的线程链接来了解我需要十六进制值的外观。

答案1

我知道这可能非常简单但我就是不明白……

我理解你的痛苦。我想说的是,你不理解的原因是nhinkle 对另一个问题的回答是因为它没有任何意义。我发现Microsoft TechNet 上的这个解释,其实际含义为:

以这个模板为例:

  **** **ZY  XWVU TSRQ  PONM LKJI  HGFE DCBA

在要隐藏的驱动器号下写上 1。在*s 和您不想隐藏的驱动器号下写上 0。现在您应该有 32 个1s 和0s。转换为十六进制。

我假设你问的是驱动器N:M:,而不是。要隐藏驱动器N:,您需要

    **** **ZY XWVU TSRQ POM LKJI HGFE DCBA
    0000 0000 0000 0000 0010 0000 0000 0000

结果为 00002000(即2000十六进制)。用同样的方法,M:1000,而“用户 3”(N:和 M:)是3000

答案2

不要使用这里给出的答案——它的十六进制转换不正确,就像另一个顶级谷歌结果一样。

您需要做的是前往此处:https://ss64.com/nt/syntax-nodrives.html 如果你想将十进制值转换为十六进制,请使用此网站https://www.rapidtables.com/convert/number/hex-to-decimal.html如果需要,请填写前面的零(例如 0001823F,因为我们需要 8 位十六进制)。

答案3

您可以使用 PowerShell!

'{0:x}' -f [int]('MN'.ToCharArray() | % { 1 -shl ($_ - [char]'A') } | measure -Sum).Sum
# note:           ^^ change this to the uppercase letters of all drives you want to hide

上述示例生成3000(针对用户 3)。使用 justM生成1000(针对用户 2);只N生成2000(用户 1)。其工作原理如下:

  • .ToCharArray()将驱动器说明符字符串拆分成单独的字符,这些字符将独立地沿管道移动
  • %是 的简写ForEach-Object;它允许为管道上的每一项运行一段代码,或者在我们的例子中,在将每一项传递到管道之前对其进行转换
  • $_ - [char]'A'A从管道上的当前字母字符中减去该字符,计算一个驱动器字母的位位置(例如C- A= 2)
  • 1 -shl (...)通过在相应的位位置放置二进制数字 1 来计算仅隐藏一个当前驱动器的数值
  • measure -Sum收集并累加流水线中传来的所有数字,将所有单个驱动器隐藏值合并为一个数字
  • [int](...).Sum从测量结果对象中获取Sum属性并将其转换为整数(而不是双精度浮点数,后者不容易格式化为十六进制)
  • '{0:x}' -f将右侧的数字格式化为十六进制字符串

相关内容