AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-1250181

Ξένη Γήινος's questions

Martin Hope
Ξένη Γήινος
Asked: 2024-02-05 23:21:36 +0800 CST

如何在不重新启动的情况下删除打开的字体文件?

  • 4

有一些字体文件无法删除。这些文件未安装,并且位于 C:\Windows\Fonts 之外。我已经预览过它们,但现在无法删除它们。

尝试删除它们将显示:

文件正在使用

此操作无法完成,因为该文件已在系统中打开

关闭文件并重试。

我知道重启后可以删除它们,但是每次需要删除字体文件时都会带来太多麻烦。

我打开了 procexp64 并发现系统进程和 fontdrvhost.exe 已打开文件。

我当然知道不要杀死系统进程,并且我尝试强制关闭句柄,但访问被拒绝。

是否可以在不重新启动的情况下删除打开的字体文件?

windows
  • 1 个回答
  • 39 Views
Martin Hope
Ξένη Γήινος
Asked: 2024-01-22 18:16:42 +0800 CST

如何通过“文件记录段”来识别文件?

  • 6

如何通过报告的“文件记录段”地址实际识别文件chkdsk?

发生了一次停电,我的驱动器文件系统被损坏,硬件和操作系统文件都很好,我已经进行了彻底的检查,但我做了一件愚蠢的事情,chkdsk /f X:首先运行它,它处理了 107855 个数据文件。

我能够访问 System Volume Information 文件夹并在 Chkdsk 文件夹中找到日志。日志有11.2MiB,我已将其上传到Google Drive。

我正在尝试以编程方式抓取日志文件并识别受其影响的所有文件。对我来说编写程序非常容易,我知道我在做什么。

我想检查受影响的文件并删除损坏的文件,并可能重新下载它们。该驱动器包含太字节的下载盗版游戏和我创建的太字节的数据。我不想做数据恢复之类的。

问题是,所使用的术语chkdsk不一致且令人困惑:

Checking file system on D:
The type of the file system is NTFS.

Chkdsk cannot run because the volume is in use by another
process.  Chkdsk may run if this volume is dismounted first.
ALL OPENED HANDLES TO THIS VOLUME WOULD THEN BE INVALID.
Would you like to force a dismount on this volume? (Y/N) Volume dismounted.  All opened handles to this volume are now invalid.
Volume label is Tremillia.

Stage 1: Examining basic file system structure ...
Attribute record of type 0x80 and instance tag 0x4 is cross linked
starting at 0x9383fc2 for possibly 0xfe clusters.
Some clusters occupied by attribute of type 0x80 and instance tag 0x4
in file 0x46c4 is already in use.
                                                                                       
Deleting corrupt attribute record (0x80, "")
from file record segment 0x46C4.
Attribute record of type 0x80 and instance tag 0x4 is cross linked
starting at 0x93840c0 for possibly 0x95 clusters.
Some clusters occupied by attribute of type 0x80 and instance tag 0x4
in file 0x46c5 is already in use.
Deleting corrupt attribute record (0x80, "")
from file record segment 0x46C5.
Attribute record of type 0x80 and instance tag 0x4 is cross linked
starting at 0x9384489 for possibly 0xc5 clusters.
Some clusters occupied by attribute of type 0x80 and instance tag 0x4
in file 0x4706 is already in use.
Deleting corrupt attribute record (0x80, "")
from file record segment 0x4706.
Attribute record of type 0x80 and instance tag 0x4 is cross linked
starting at 0x938454e for possibly 0x90 clusters.
Some clusters occupied by attribute of type 0x80 and instance tag 0x4
in file 0x470b is already in use.
Deleting corrupt attribute record (0x80, "")
from file record segment 0x470B.
Attribute record of type 0x80 and instance tag 0x3 is cross linked
starting at 0x93799ea for possibly 0x40 clusters.
Some clusters occupied by attribute of type 0x80 and instance tag 0x3
in file 0x4f3f is already in use.
...

十六进制地址有3种类型,分别称为“文件记录段”、“文件”和“簇”。立即您可以看到簇地址开始非常大,并且比“文件”和“文件记录段”的地址大得多。

然后你可以看到“文件”和“文件记录段”地址的范围相似,相同的地址被称为“文件”和“文件记录段”。由此可见,“文件”和“文件记录段”是同一个东西。

我尝试用谷歌搜索如何按文件记录段识别文件,大多数结果完全无关,最重要的结果是由有问题的软件公司设计的旨在销售其产品的无用教程。诸如“如何修复”、“当文件记录段不可读时该怎么办”之类的内容......

谷歌完全没用,结果根本不是我想要的,我想通过“文件记录段”编号来识别文件。

我发现的唯一相关的是这篇文章。

好吧,我终于有机会尝试一些基于 Linux 的 ntfs 实用程序。我不确定它们是否来自 ntfs-3g、ntfsprogs 或 ntfsutils,但任何拥有最喜欢的 Linux 发行版的人都应该能够启动它并轻松获取我需要的信息。这些数字是索引节点号,两个命令非常有帮助。这提供了我所需要的:

ntfscluster -I <inode#/文件记录段#>

它包括相关文件的完整路径和很少的其他信息。>这个命令提供了很多我不需要的信息:

ntfsinfo -i <inode#/文件记录段#>

它没有提供路径,但提供了父目录的索引节点号,因此您可以反复使用此命令来逆向工程路径。

NTFSCluster 是一个 Linux 实用程序,搜索ntfscluster windows会显示有关 NTFS 文件系统及其簇大小的结果,并显示消息“您是说:ntfs cluster windows”。唯一相关的是第三个结果:NtfsProgs for Windows - GnuWin32 - SourceForge,该结果是 2004 年的一个古老程序,下载时缺少 libintl3.dll 和 libiconv2.dll 。将 .dll 粘贴到该文件夹​​后,它不起作用:

PS C:\Users\Xeni> C:\Users\Xeni\Downloads\ntfsprogs-1.9.0-bin\bin\ntfscluster.exe -I 154681282 D:
Failed to set locale, using default '(null)'.
win32_io.c(199): ntfs_device_win32_open The handle is invalid.
 ioctl failed
Couldn't mount device 'D:': Invalid argument

SysInternals的 NTFSInfo似乎没有提供按文件记录段识别文件的功能。

在寻找替代品后,我发现nfi.exe它更古老,是 1999 年的!它确实有效:

PS C:\Users\Xeni> nfi.exe D: 0x937950
NTFS File Sector Information Utility.
Copyright (C) Microsoft Corporation 1999. All rights reserved.


***Logical sector 9664848 (0x937950) on drive D is in file number 312188.
\Games\SPACEE~1\data\textures\galaxies\GALAXI~1.PAK
    $DATA (nonresident)
        logical sectors 8738944-10045631 (0x855880-0x9948bf)

但它使用逻辑扇区号作为参数而不是 FILE RECORD SEGMENT:

PS C:\Users\Xeni> nfi.exe /?
NTFS File Sector Information Utility.
Copyright (C) Microsoft Corporation 1999. All rights reserved.

Dumps information about an NTFS volume, and optionally determines
which volume and file contains a particular sector.

Usage: D:\CliExec\nfi.exe drive-letter [logical-sector-number]

            Drive-letter can be a single character or a character followed
            by a colon (i.e., C or C: are acceptable).

            Logical-sector-number is a decimal or 0x-prefixed hex
            number, specifying a sector number relative to the volume
            whose drive letter is given by drive-letter. If not
            specified, then information about every file on the volume
            is dumped.

       D:\CliExec\nfi.exe NT-device-path physical-sector-number

            Determines which volume a given physical sector on a drive is
            within, and then which file on the volume it is in.

            NT-device-path is the NT-style path to a physical device.
            It must not include a partition specification.

            Physical-sector-number is a decimal or 0x-prefixed hex
            number, specifying a sector number relative to the physical
            drive whose device path is given by NT-device-path.

        D:\CliExec\nfi.exe full-win32-path

            Dumps information about a particular file. full-win32-path
            must start with a drive letter and a colon.

我认为逻辑扇区号和文件记录段是同一件事,但看起来它们不是:

PS C:\Users\Xeni> fsutil fsinfo ntfsInfo D:
NTFS Volume Serial Number :        0xfc2bea5043264555
NTFS Version      :                3.1
LFS Version       :                2.0
Total Sectors     :                7,810,824,157  (  3.6 TB)
Total Clusters    :                  976,353,019  (  3.6 TB)
Free Clusters     :                  275,935,695  (  1.0 TB)
Total Reserved Clusters :                 36,875  (144.0 MB)
Reserved For Storage Reserve :                 0  (  0.0 KB)
Bytes Per Sector  :                512
Bytes Per Physical Sector :        512
Bytes Per Cluster :                4096
Bytes Per FileRecord Segment    :  1024
Clusters Per FileRecord Segment :  0
Mft Valid Data Length :            2.14 GB
Mft Start Lcn  :                   0x0000000000000002
Mft2 Start Lcn :                   0x000000000a31f5fd
MFT Zone Size  :                   200.13 MB
Max Device Trim Extent Count :     0
Max Device Trim Byte Count :       0
Max Volume Trim Extent Count :     62
Resource Manager Identifier :      E548A579-8A28-11EB-BA87-F4B52033630B

看起来文件记录段是1024字节,逻辑扇区号是512字节,所以也许我需要将数字加倍才能获得实际引用的文件。但这很可能是错误的,因为簇数量非常高。

那么如何通过文件记录段来真正识别文件呢?


更新

我使用了一些 Google-fu 并想出了这个搜索关键字的残暴:"file record segment" -unreadable -fix -corrupt我终于找到了一些有用的东西:

文件记录段:主文件表中的记录,包含 NTFS 卷上特定文件的属性。文件记录段的大小始终为 1,024 字节(1 KB)。

短短两句话就包含了关键信息。这就对了。结果是最高结果,所有其他结果均无关紧要。

现在我需要找到一种以编程方式查询主文件表的方法,并希望我不会意外损坏它,这相当于更徒劳的谷歌搜索......

windows
  • 1 个回答
  • 57 Views
Martin Hope
Ξένη Γήινος
Asked: 2024-01-21 22:37:19 +0800 CST

“$DATA(非居民)”是什么意思?

  • 8

我家停电了,我的计算机硬盘驱动器的文件系统被损坏。

检查了系统文件和硬件,没有发现问题。但我做了一件愚蠢的事情,chkdsk /f X:首先运行它,它发现并删除了 16659 个文件中损坏的属性记录。

现在我认为所有这些文件可能都已损坏。

我获得了“System Volume Information”文件夹的所有权,并在 Chkdsk 文件夹中找到了完整的日志。

我使用 nfi.exe 从扇区号中获取受影响的文件。我正在尝试编写一个程序asyncio.create_subprocess_exec来执行此操作。

但首先我想了解nfi.exe.

PS C:\Users\Xeni> D:\downloads\nfi\nfi.exe D: 0x9379dc5
NTFS File Sector Information Utility.
Copyright (C) Microsoft Corporation 1999. All rights reserved.


***Logical sector 154639813 (0x9379dc5) on drive D is in file number 551312.
\Games\Saints Row 4\packfiles\pc\cache\dlc3.vpp_pc
    $STANDARD_INFORMATION (resident)
    $FILE_NAME (resident)
    $FILE_NAME (resident)
    $DATA (nonresident)
        logical sectors 154625064-154690687 (0x9376428-0x938647f)

输出是什么意思?什么是$DATA (nonresident)?这是否意味着元数据和文件名被保留,但文件的数据消失了,该文件是“幽灵文件”?

我尝试用谷歌搜索"$DATA (nonresident)",但完全没有发现它的含义。

windows
  • 1 个回答
  • 290 Views
Martin Hope
Ξένη Γήινος
Asked: 2023-04-07 23:06:24 +0800 CST

Windows 10 错误报告没有互联网

  • 6

我知道这个问题已经被问过很多次了,但我还没有找到任何能真正解决它的方法。

我使用 VPN 访问国际互联网,信息自由是一项基本人权,不幸的是我住在中国,所以我必须使用 VPN 来行使这项权利。

现在 Windows 10 在连接 VPN 时错误地报告“无互联网”,尽管事实上我可以很好地访问任何被阻止的网站(例如www.google.com)。Windows 在 VPN 过去处于活动状态时正确报告了“Internet 访问”,但不知何故现在却没有。

您可能认为这没什么大不了的,但我的 ISP 不断尝试断开我的 VPN,有时他们会成功,而当我实际断开连接时,网络连接状态指示器将无法告诉我。

我当然用谷歌搜索了这个,一些结果建议进行以下注册表编辑并重新启动路由器:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]
"ActiveDnsProbeContent"="8.8.8.8"
"ActiveDnsProbeContentV6"="2001:4860:4860::8844"
"ActiveDnsProbeHost"="dns.google"
"ActiveDnsProbeHostV6"="dns.google"
"ActiveWebProbeContent"="success"
"ActiveWebProbeContentV6"="success"
"ActiveWebProbeHost"="detectportal.firefox.com"
"ActiveWebProbeHostV6"="detectportal.firefox.com"
"ActiveWebProbePath"="success.txt"
"ActiveWebProbePathV6"="success.txt"
"CaptivePortalTimer"=dword:00000000
"CaptivePortalTimerBackOffIncrementsInSeconds"=dword:00000005
"CaptivePortalTimerMaxInSeconds"=dword:0000001e
"EnableActiveProbing"=dword:00000001
"PassivePollPeriod"=dword:0000000f
"StaleThreshold"=dword:0000001e
"WebTimeout"=dword:00000023

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\ManualProxies]


[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator]
@=""

我试过了,但没有用。

我可以很好地 ping 测试中使用的服务器:

PS C:\Users\Xeni> ping detectportal.firefox.com

Pinging prod.detectportal.prod.cloudops.mozgcp.net [34.107.221.82] with 32 bytes of data:
Reply from 34.107.221.82: bytes=32 time=203ms TTL=120
Reply from 34.107.221.82: bytes=32 time=203ms TTL=120
Reply from 34.107.221.82: bytes=32 time=203ms TTL=120
Reply from 34.107.221.82: bytes=32 time=204ms TTL=120

Ping statistics for 34.107.221.82:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 203ms, Maximum = 204ms, Average = 203ms
PS C:\Users\Xeni> ping 8.8.8.8

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=203ms TTL=120
Reply from 8.8.8.8: bytes=32 time=203ms TTL=120
Reply from 8.8.8.8: bytes=32 time=203ms TTL=120
Reply from 8.8.8.8: bytes=32 time=200ms TTL=120

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 200ms, Maximum = 203ms, Average = 202ms

我已禁用并重新启用网络适配器...

什么都不管用。

但是我知道如果我断开 VPN,NCSI 会立即正确报告我可以访问互联网,我已经成功地重现了很多次而没有失败,但是当然这不是解决方案,原因很明显。

我的设置 -> 网络和互联网 -> 状态 -> 网络状态说:

不能访问网络

您的设备已连接,但您可能无法访问

网络上的任何东西。如果您的数据计划有限,您可以

使此网络成为按流量计费的连接或更改其他

特性。

我该如何解决这个问题?

PS 这些细节无关紧要,但我会在这里添加它们以防有人提到它们:

我的操作系统是 Windows 10 Pro 22H2 x64,我使用的是有线以太网连接,但它们对问题的影响不大;不,dism /online /cleanup-image /restorehealth绝对sfc scannow不解决这个问题,所以不重装操作系统;而且我之前已经使用 Snappy Driver Installer 更新了网络驱动程序,并且我已经重新启动了我的电脑......

windows
  • 2 个回答
  • 56 Views
Martin Hope
Ξένη Γήινος
Asked: 2022-06-05 23:53:38 +0800 CST

如何将 148GiB 文件从 Android 手机传输到计算机?

  • 18

请帮忙,我需要将价值 148GiB 的数据从我的 Android 手机传输到计算机。

我的手机是 Oppo A96,空间不足:

在此处输入图像描述

是满屏录视频,一共占用了148GiB的空间,我准备把文件移动到我的4TB硬盘(3725.29GiB容量),这样我可以腾出空间,我可以编辑和压缩视频在我将它们发布到我的 Youtube 频道之前。

当然我有一根USB数据线,所以我把数据线的一端插到手机上,另一端插到电脑上的USB 3.0端口,将手机连接到电脑,在提示中选择“传输文件”,并开始使用 Windows 资源管理器复制文件:

在此处输入图像描述

在此处输入图像描述

这需要很长时间。

完成转移需要超过 4.5 小时,我已取消操作,我不能等待 4.5 小时才能完成移动操作,即使在不太可能的情况下,我也不会等到操作完成时'无法访问计算机,这是我不会在这里讨论的一些“技术难题”。

于是我打开任务管理器发现:

在此处输入图像描述

Windows 资源管理器仅以可怜的 37.1 MB/s 移动文件...

USB 3.0的理论传输速度为4.8 Gbit/s:

4.8 * 1000^3 bit/s
600 * 1000^2 byte/s
600 * 1000^2/1024^2 mebibyte/s
572.20458984375 MiB/s

以及该特定 HDD 的性能:

在此处输入图像描述

我如何加快这个过程,使其尽可能快?

如果它是普通驱动器,我会使用 FastCopy,但在这里我通过 USB 电缆访问模拟文件系统,所以我不知道它是否是最有效的解决方案。

如果文件的内容很重要,大约一半是 JPEG 截图,所有这些截图的大小都小于 1MiB。其他文件是各种大小的 MPEG-4 屏幕录制文件,但大多数都在 0.5 - 5 GiB 之间。并且有 95 张图片和 100 个视频,总共 159636475587 字节(148.67 GiB)。


所有涉及蓝牙、Wi-Fi 和云存储的选项只能比物理连接慢,它们的带宽都比 USB 3.0 窄。


刚查了一下,手机的USB接口是Type-C源的,不知道是否支持USB 3.0,没有说明。至于数据线,我不知道,也许我会为手机买一根 USB 3.0 数据线。

hard-drive usb
  • 9 个回答
  • 7385 Views
Martin Hope
Ξένη Γήινος
Asked: 2022-05-14 19:30:35 +0800 CST

帧率与视频图像质量成反比吗?

  • 6

我在我的安卓手机上录了几个视频,它们占用了超过 128GiB 的空间,所以我决定使用 ffmpeg 减少视频的文件大小。

我打算在保持合理的视觉质量的同时最小化文件大小。

视频有四个重要特征:比特率、帧率、分辨率和持续时间。

帧率表示每秒显示多少帧,比特率表示存储一秒钟的视频需要多少位,分辨率是帧的宽度和高度,以像素为单位。

我对视频了解不多,但如果我的数学很好,文件大小应该等于比特率乘以长度。

图像质量很难衡量,但在固定分辨率下,根据经验,单个像素占用的字节数越多,图像质量就越好,因此这意味着更大的文件大小等于固定分辨率下的更好质量。

现在假设分辨率是固定的,每帧的大小可以通过比特率除以帧率来计算,所以帧的文件大小与比特率成正比,与帧率成反比,假设文件大小与视觉质量成正比,这意味着帧率成反比与视觉质量成正比。

那么,在固定比特率和固定分辨率下,增加帧率实际上会降低图像质量吗?我的推理对吗?我曾尝试用谷歌搜索该主题,但很少有结果与往常一样相关,而相关的结果却给出了相互矛盾的答案。

video
  • 1 个回答
  • 49 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-03-29 01:54:51 +0800 CST

Unity 和 Unreal Engine 4 安装文件下载到哪里?

  • 5

如果这个问题听起来微不足道,请原谅我,但我已经多次尝试谷歌,但未能返回任何相关结果。

事情很简单,我已经安装了 Unity(通过 Unity Hub)和 Unreal Engine 4(通过 Epic Games Launcher),安装成功,我没有遇到任何问题,我不想卸载它们,但是它们下载了几十G的安装文件,安装后明显没用,但是还是占用了宝贵的系统盘空间,所以想把安装文件去掉,节省空间。

但是我找不到文件在哪里,我试过谷歌,谷歌再次证明了它的无用;

所以我使用 PowerShell 搜索了文件夹:

$env:Programdata,$env:Userprofile | %{get-childitem -path $_ -force -directory -recurse -depth 5 | where {$_.name -match 'unity|epic|unreal'} | %{$_.fullname}}

并且删除不相关的结果和程序的安装目录后,结果是这样的:

C:\ProgramData\Epic
C:\ProgramData\Unity
C:\Users\Estranger\AppData\Local\EpicGamesLauncher
C:\Users\Estranger\AppData\Local\Unity
C:\Users\Estranger\AppData\Local\unityhub-updater
C:\Users\Estranger\AppData\Local\UnrealEngine
C:\Users\Estranger\AppData\Local\UnrealEngineLauncher
C:\Users\Estranger\AppData\LocalLow\Unity
C:\Users\Estranger\AppData\Roaming\Unity
C:\Users\Estranger\AppData\Roaming\Unity Hub
C:\Users\Estranger\AppData\Roaming\UnityHub

但它们只占用不到 2GiB 的空间:

$size=@()
$folders=@(
'C:\ProgramData\Epic'
'C:\ProgramData\Unity'
'C:\Users\Estranger\AppData\Local\EpicGamesLauncher'
'C:\Users\Estranger\AppData\Local\Unity'
'C:\Users\Estranger\AppData\Local\unityhub-updater'
'C:\Users\Estranger\AppData\Local\UnrealEngine'
'C:\Users\Estranger\AppData\Local\UnrealEngineLauncher'
'C:\Users\Estranger\AppData\LocalLow\Unity'
'C:\Users\Estranger\AppData\Roaming\Unity'
'C:\Users\Estranger\AppData\Roaming\Unity Hub'
'C:\Users\Estranger\AppData\Roaming\UnityHub'
)
$folders | %{$size+=(Get-ChildItem -Path $_ -Force -Recurse | Measure-Object -Sum Length).Sum / 1048576}
($size | Measure-Object -Sum).Sum

最后一行返回 1067.47400283813 表示它们总共只占用了 1067.47400283813MiB 空间,但是在线安装程序下载了数十 GB 的文件,那么这些文件下载到哪里,以便我可以删除它们?

installation unity3d
  • 1 个回答
  • 164 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-03-14 00:19:08 +0800 CST

额定 6.0Gb/s 的 SATA 3.0 硬盘的最大读/写速度?

  • 9

实际上,SATA III 6.0Gb/s 硬盘驱动器的实际最大读/写速度是多少?

我知道6.0gb/s是什么意思,意思是每秒6千兆,giga-前缀使用SI十进制定义,意思是1,000,000,000,是兆的1000倍,公斤的1,000,000倍,但是计算机使用二进制和使用Byte 为基本单位,1 Byte = 8 bit,每个单位是前者的 1,024 倍,所以 1 KB 是 1,024 Byte 和 8,192 bit,1 MB 是 1,048,576 Byte 和 8,388,608 bit,1 GB 是 1,073,741,824 Byte 和 8,589,934,592 bit,所以十进制的 6.0gb/s 将是 732,421.875 KB/s 或二进制的 715.2557373046875 MB/s。

但实际上,我的硬盘是 Seagate BarraCuda ST1000DM010 1TB 7200 RPM 64MB SATA III 6.0gb/s 并连接到我主板上的 SATA III 6.0gb/s 端口:

在此处输入图像描述

然而,我从未在 taskmgr.exe 中观察到此 HDD 的磁盘读/写速度高于 160MiB/s,使用缓冲区大小为 256MiB 的 FastCopy 从同一 HDD 复制文件最多可提供 128MiB/s 的传输速率,大多数时候通常在 108MiB/s 左右,有趣的是Get-FileHash可以将 HDD 的 I/O 速度提高到 144MiB/s。

那么SATA 6.0gb/s接口的SATA III硬盘在7200转的最大读/写速度是多少?

我问这个问题是因为我打算购买Seagate Exos 7E8 4TB 512n SATA 128MB Cache 3.5-Inch Enterprise Hard Drive (ST4000NM0035),它有 128MB 缓存而不是我的 64MB,那么我应该期望什么读/写速度?它会是大约 256MiB/s,因为它的缓存是我的两倍,还是更高?


所以 SATA 使用 8b/10b 编码,所以理论上最大数据速率是 4.8gb/s,等于 600MB/s 或 572.20458984375MiB/s,但是这个速度比我实际能够得到的要高得多……

hard-drive sata
  • 1 个回答
  • 7899 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-02-21 21:05:54 +0800 CST

固件无法识别 GPT 磁盘

  • 5

我的主板是 BIOSTAR H81MHv3,它的 BIOS/UEFI/Firmware/Whatever 是 Aptio Setup Utility 版本 2.15.1231 版权所有 (C) 2012 American Megatrends, Inc.

我有四个磁盘,都是希捷硬盘:

Size    Model               Real Size
0.5TB   ST500DM002-1ER14    466GiB
1TB     ST1000DM010-2EP1    932GiB
2TB     ST2000LM007-1R81    1863GiB
4TB     ST4000VX005-2LY1    3726GiB

最后一个盘是2天前新买的,测试没问题,买HDD是为了存储容量而不是速度,因为我打算下载很多游戏,类似大小的SSD太贵了;

由于磁盘大小超过2048GiB,只能使用GPT分区表,磁盘没有分区,买的时候已经在使用GPT,所以我自己用DiskGenius创建了分区。我先创建了一个 300MiB ESP 分区和一个 128MiB MSR 分区,然后创建了一个 1TiB NTFS 分区和一个 2TiB NTFS 分区,剩下 653.6GB 可用空间。

在此处输入图像描述

我计划将 Windows 10 Pro for Workstations v20H2 安装到 1TiB 分区并将游戏安装到 2TiB 分区,并将 Fedora 33 for Workstations 安装到可用空间。

但是我遇到了一个问题:虽然所有Windows软件都能正确识别分区,但固件无法识别磁盘本身,这意味着我无法从磁盘启动。

这是默认设置:

在此处输入图像描述

使用默认设置无法识别 HDD:

在此处输入图像描述

我试图禁用 CSM,但仍然无法识别磁盘:

在此处输入图像描述

我用谷歌搜索了一个解决方案,发现了一个没有帮助的类似问题:GPT Partitioned Disk not Recognized by BIOS

我可以dism毫无问题地将 Windows 安装到磁盘上,但我无法从它启动。

我还应该尝试什么使 HDD 可启动?

hard-drive boot
  • 1 个回答
  • 236 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-02-19 03:40:07 +0800 CST

如果我添加专用 GPU,Windows 10 会无法启动吗?

  • 5

我的电脑规格:

CPU:        Intel Core i5-4430 @ 3.00GHz
GPU:        Intel HD Graphics 4600
Mainboard:  BIOSTAR H81MHV3
RAM:        DDR3 1600MHz 4GB + 8GB
HDD:        Seagate SATA HDD 500GB + 1TB + 2TB

我打算购买具有 2GB VRAM 的 NVIDIA 专用显卡,但我不知道当前的 Windows 10 安装是否无法启动,需要全新安装。

  • 我问是因为在之前的主板死机后更换了主板和 CPU 后,我重新安装了 Windows,但它无法启动并返回 BSOD 错误:
    A required device isn't connected or can't be accessed.
    

更换硬件后是否需要执行全新安装?

windows-10 boot
  • 1 个回答
  • 45 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-29 04:26:26 +0800 CST

Windows 10 - PowerShell 注册表驱动器无法正常工作

  • 6

我使用的是 Windows 10 20H2,我已在 PowerShell Desktop 5.1.19041.610 和 PowerShell Core 7.1.1 上多次成功重现此问题而没有失败。

问题:Test-Path 仅适用于两个 PowerShell 注册表驱动器(缩短的注册表配置单元名称):

HKCU:和HKLM:

它们分别是HKEY_CURRENT_USER和的缩写HKEY_LOCAL_MACHINE。

在 PowerShell 中,它们的全名是:

Registry::HKEY_CURRENT_USER和Registry::HKEY_LOCAL_MACHINE分别。

但是有五个注册表配置单元,其他三个是:

HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG和HKEY_USERS

他们的简称:

HKCR:,HKCC:和HKU:

Test-Path找不到驱动器,但是Test-Path如果提供了全名,则可以找到它们:

TEST-PATH HKCR:
TEST-PATH HKCU:
TEST-PATH HKLM:
TEST-PATH HKU:
TEST-PATH HKCC:
TEST-PATH REGISTRY::HKEY_CLASSES_ROOT
TEST-PATH REGISTRY::HKEY_CURRENT_CONFIG
TEST-PATH REGISTRY::HKEY_USERS
$PSVersionTable

在此处输入图像描述

在此处输入图像描述

我很好奇,我想知道它为什么会这样。

任何人都可以提供解释吗?

我已经确认其他三个驱动器也不能与其他 cmdlet 一起使用,我该如何使用这三个注册表驱动器?

windows-10 powershell
  • 2 个回答
  • 1677 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-26 22:33:18 +0800 CST

如何使用 PowerShell 和/或 Python 重启路由器?

  • 10

如何使用PowerShell重启路由器?

我的电脑通过网线连接到路由器,路由器充当调制解调器,通过PPPoE连接到ISP,我的电脑在NAT后面。

我的路由器型号:华为HS8545M,局域网地址:192.168.1.1,网页管理员登录:CMCCAdmin,网页管理员密码:aDm8H%MdA。

我必须执行以下操作才能重新启动路由器(总共点击 7 次,浏览器记住了登录名和密码):

在此处输入图像描述

在此处输入图像描述

步骤太多了。

我尝试过使用这种方法:

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Navigate "https://192.168.1.1"

但是过了一会儿,连接丢失,.Document为空,尝试刷新会导致此错误:

OperationStopped: The RPC server is unavailable. (0x800706BA)

我使用的是 Windows 10 20H2,并且我禁用了远程桌面、远程协助、远程注册表、Windows 远程管理和许多其他功能,我禁用了远程东西,因为它们对安全构成威胁,我认为它们与此相关;顺便说一句,RPC服务正在运行。

谁能帮我?


第一页源代码:page1.html

第二页源代码:page2.html

这个应该很简单,登录192.168.1.1,创建一个cookie,使用cookie进入192.168.1.1/index.asp,提交Restart_button,大功告成,不过我对处理网络的命令不是很熟悉...


我目前正在寻找 Python 的方式,我使用的是 Python 3.9.1 amd64,我早就把它放在了 PATH 中,我已经通过 pip 安装了 Selenium 和 Twill。并将GeckoDriver.exe下载并解压到Python安装文件夹;

我知道 selenium、twill、urllib、urllib2、cookielib 和 webbot,都能够做到这一点,我目前正试图找出如何以最好的方式做到这一点。


我已经设法通过斜纹布登录到 Python 中的路由器,但是我不知道下一步该做什么:

from twill.commands import *
go('http://192.168.1.1')
showforms()
fv("1","txt_Username","CMCCAdmin")
fv("1","txt_Password","aDm8H%MdA")
showforms()
submit('btnSubmit')
go("http://192.168.1.1/index.asp")

在此处输入图像描述

按钮:

<input type="button" name="Restart_button" id="Restart_button" class="submit" style="width:98px" onclick="Reboot()" value="重启">

它位于:

html.body.#container.#center.#content.table.tbody.tr.td.#frameContent.html.body.div.#Restart_button

另外,inputfields第一页(http://192.168.1.1):

PS C:\Windows\System32> $html.inputfields

outerHTML : <input name="txt_Username" type="text" id="txt_Username" style="float:left;padding:0;width:218px;height:38px;line-height:38px;text-indent:0.5em;border:0 solid green;background-color:transparent;" maxlength="31"/>
tagName   : INPUT
name      : txt_Username
type      : text
id        : txt_Username
style     : float:left;padding:0;width:218px;height:38px;line-height:38px;text-indent:0.5em;border:0 solid green;background-color:transparent;
maxlength : 31

outerHTML : <input name="txt_Password" type="password" id="txt_Password" maxlength="127" style="float:left;padding:0;width:218px;height:38px;line-height:38px;text-indent:0.5em;border:0 solid green;background-color:transparent;"
            maxlength="31"/>
tagName   : INPUT
name      : txt_Password
type      : password
id        : txt_Password
maxlength : 31
style     : float:left;padding:0;width:218px;height:38px;line-height:38px;text-indent:0.5em;border:0 solid green;background-color:transparent;

outerHTML : <input type="button" id="btnSubmit" name="btnSubmit" value="确定" onclick="SubmitForm();" class="button_css"/>
tagName   : INPUT
type      : button
id        : btnSubmit
name      : btnSubmit
value     : 确定
onclick   : SubmitForm();
class     : button_css

outerHTML : <input type="reset" name="Submit2" value="取消" onclick="canceltext();" class="button_css"/>
tagName   : INPUT
type      : reset
name      : Submit2
value     : 取消
onclick   : canceltext();
class     : button_css

我有重置页面的源代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache" />
<link rel="stylesheet"  href='../../../../Cuscss/frame.css?2020070716413845-1425773353' type='text/css'>
<script language="JavaScript" src="../../../resource/common/util.js?2020070716413845-1425773353"></script>
<script language="JavaScript" type="text/javascript">

function LoadFrame()
{
}


function Reboot()
{
if(ConfirmEx("确定要重启设备吗?"))
{
setDisable('Restart_button',   1);
setDisable('Restore_button',    1);
setDisable('btnRestoreDftCfg', 1);
var Form = new webSubmitForm();

Form.setAction('set.cgi?x=' + 'InternetGatewayDevice.X_HW_DEBUG.SMP.DM.ResetBoard'
 + '&RequestFile=html/ssmp/devmanage/cmccdevicereset.asp');
Form.addParameter('x.X_HW_Token', getValue('onttoken'));
Form.submit();
}
}

</script>
</head>
<body class="mainbody" onLoad="LoadFrame();">

<div class="func_spread"></div>
<div class="title_with_desc">
<label id="Title_reboot_lable">设备重启</label>
</div>
<div class="title_01" style="padding-left:10px;" width="100%">
<label id="Title_reboot_tips_lable">点击如下按钮重启路由器。</label>
</div>
<div class="button_spread"></div>
<div align="right">
<input type="hidden" name="onttoken" id="hwonttoken" value="de0f5f98c4d4a77239ccb981cd5c4bf3">
<input type='button' name="Restart_button" id="Restart_button" class="submit" style="width:98px" onClick='Reboot()' value="重启">
</div>
</body>
</html>

它位于地址:

http://192.168.1.1/html/ssmp/devmanage/cmccdevicereset.asp

另外我真的不知道Submit('btnSubmit')我是否登录,我不完全确定......

尽管这可行,但 Firefox 的初始化非常缓慢。


我终于想出了如何通过 telnet 方式进行操作:

telnet 192.168.1.1
root
adminHW
reset

如何使其成为自动输入命令的脚本?

windows-10 networking
  • 4 个回答
  • 1673 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-24 19:28:38 +0800 CST

如何启动 PowerShell 运行命令并将变量传递给新进程?

  • 5

我目前正在编写一个脚本,该脚本可以在一次运行中对我的 Windows 10 20H2 操作系统进行所有黑客攻击。

我正在使用 PowerShell 7.0.4 x64,我想在 Admin 中运行脚本pwsh,我发现一些注册表项需要更改 TrustedInstaller 权限,我找到了一个解决方案:使用psexec -S启动一个pwsh进程来运行具有TrustedInstaller权限的命令,不幸的是我不知道如何将变量传递给新进程,并使其自动退出psexec以继续执行脚本。

我将以此为例:

$TiSvc=@(
"PrintWorkflowUserSvc"
"RmSvc"
"SCardSvr"
"SecurityHealthService"
"Sense"
"SgrmBroker"
"wscsvc"
)
$TiSvc | %{Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -Name Start -Type DWord -Value 4}

如果没有TrustedInstaller特权,该命令将失败并出现拒绝访问错误。

现在,要解决这个问题,请使用psexec运行命令(我已将SysInternals文件夹放入path):

$PwSh=(Get-Process -Id $pid).path
PsExec -S $PwSh ???

我想在当前会话中设置[array]变量$TiSvc,我不知道如何传递$TiSvc给新pwsh会话并运行此命令:

$TiSvc | %{Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$_" -Name Start -Type DWord -Value 4}

并且命令执行完毕后,退出新的pwsh会话,退出psexec继续脚本执行;

我怎样才能做到这一点?任何帮助表示赞赏。

windows-10 command-line
  • 1 个回答
  • 1329 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-23 04:43:37 +0800 CST

如何查看文件浏览器操作历史?

  • 7

文件资源管理器维护在当前资源管理器进程中执行的操作列表(复制、删除、移动、新建、重命名)的记录,因此如果您改变主意,可以撤消更改(Ctrl+ Z)或重做更改(Ctrl+ Y)。

我使用的是 Windows 10 20H2,我已将撤消和其他内容固定到快速访问工具栏。并且菜单中的编辑按钮是灰色的。

在此处输入图像描述

如果没有要撤消/重做的操作,撤消和重做按钮将为灰色,如果有可撤消/重做的操作,则为蓝色。当撤消/重做按钮处于活动状态时,将光标悬停在它们上方将显示一条消息,该消息将显示可以撤消/重做的特定操作,并将显示执行操作的文件的文件名(撤消文件移动。文本)。如果涉及多个文件(撤消移动),它将不会显示文件名。

undo/redo 历史如果explorer.exe重新启动会被清除,似乎表明历史存储在 RAM 中;如果执行以下三个之一,历史也将被清除:

1、永久删除文件(不移动到$RECYCLE.BIN);2、创建快捷方式,保存快捷方式后尝试撤消创建快捷方式;3、执行需要管理员权限的文件操作。

其他程序(即cmd、pwsh)执行的文件操作不会记录在资源管理器的历史记录中。

问题:如何查看此文件浏览器操作历史记录?

我在这里看到了两个类似的问题: 查看 Windows 资源管理器的完整撤消历史记录和获取 Windows 中文件操作的历史记录?

但是他们都没有解决我的问题,因为

  1. 我不是要监视对特定文件夹执行的文件操作,而是监视在当前资源管理器进程中执行的所有操作;

  2. Process Monitor 只会显示启动后执行的操作,而不是之前执行的操作,并且记录的事件数量增加得非常快,每秒有数千个新事件,其中大部分是由 explorer.exe 执行的,这是我不执行任何操作的时候,即使我按进程ID过滤并查看文件摘要,也会记录一个文件夹,即使该文件夹只是查询而不修改......

windows-10 windows-explorer
  • 1 个回答
  • 2058 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-23 00:28:12 +0800 CST

如何通过注册表或命令行更改电源选项?

  • 7

我想powercfg.cpl直接通过注册表更改“电源选项”。

具体来说,我想改变这一点:

在此处输入图像描述

对这些设置:

在此处输入图像描述

我正在使用交流电源的台式计算机,因此不需要省电并且会降低性能;我在 BIOS 中禁用了快速启动。

我已在以下位置打开此注册表项regedit.exe:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power

我唯一能在钥匙里弄出来的东西是:

HiberFileSizePercent REG_DWORD 0
HibernateEnabled REG_DWORD 0
HibernateEnabledDefault REG_DWORD 1

我尝试使用powercfg.exe,这就是我得到的:

C:\Windows\system32>powercfg /l

Existing Power Schemes (* Active)
-----------------------------------
Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e  (Balanced)
Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (High performance) *
Power Scheme GUID: a1841308-3541-4fab-bc81-f71556f20b4a  (Power saver)

C:\Windows\system32>powercfg /q
Power Scheme GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (High performance)
  GUID Alias: SCHEME_MIN
  Subgroup GUID: 0012ee47-9041-4b5d-9b77-535fba8b1442  (Hard disk)
    GUID Alias: SUB_DISK
    Power Setting GUID: 6738e2c4-e8a5-4a42-b16a-e040e769756e  (Turn off hard disk after)
      GUID Alias: DISKIDLE
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0xffffffff
      Possible Settings increment: 0x00000001
      Possible Settings units: Seconds
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x000004b0

  Subgroup GUID: 02f815b5-a5cf-4c84-bf20-649d1f75d3d8  (Internet Explorer)
    Power Setting GUID: 4c793e7d-a264-42e1-87d3-7a0d2f523ccd  (JavaScript Timer Frequency)
      Possible Setting Index: 000
      Possible Setting Friendly Name: Maximum Power Savings
      Possible Setting Index: 001
      Possible Setting Friendly Name: Maximum Performance
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

  Subgroup GUID: 0d7dbae2-4294-402a-ba8e-26777e8488cd  (Desktop background settings)
    Power Setting GUID: 309dce9b-bef4-4119-9921-a851fb12f0f4  (Slide show)
      Possible Setting Index: 000
      Possible Setting Friendly Name: Available
      Possible Setting Index: 001
      Possible Setting Friendly Name: Paused
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

  Subgroup GUID: 19cbb8fa-5279-450e-9fac-8a3d5fedd0c1  (Wireless Adapter Settings)
    Power Setting GUID: 12bbebe6-58d6-4636-95bb-3217ef867c1a  (Power Saving Mode)
      Possible Setting Index: 000
      Possible Setting Friendly Name: Maximum Performance
      Possible Setting Index: 001
      Possible Setting Friendly Name: Low Power Saving
      Possible Setting Index: 002
      Possible Setting Friendly Name: Medium Power Saving
      Possible Setting Index: 003
      Possible Setting Friendly Name: Maximum Power Saving
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

  Subgroup GUID: 238c9fa8-0aad-41ed-83f4-97be242c8f20  (Sleep)
    GUID Alias: SUB_SLEEP
    Power Setting GUID: 29f6c1db-86da-48c5-9fdb-f2b67b1f44da  (Sleep after)
      GUID Alias: STANDBYIDLE
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0xffffffff
      Possible Settings increment: 0x00000001
      Possible Settings units: Seconds
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

    Power Setting GUID: 94ac6d29-73ce-41a6-809f-6363ba21b47e  (Allow hybrid sleep)
      GUID Alias: HYBRIDSLEEP
      Possible Setting Index: 000
      Possible Setting Friendly Name: Off
      Possible Setting Index: 001
      Possible Setting Friendly Name: On
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

    Power Setting GUID: 9d7815a6-7ee4-497e-8888-515a05f02364  (Hibernate after)
      GUID Alias: HIBERNATEIDLE
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0xffffffff
      Possible Settings increment: 0x00000001
      Possible Settings units: Seconds
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

    Power Setting GUID: bd3b718a-0680-4d9d-8ab2-e1d2b4ac806d  (Allow wake timers)
      GUID Alias: RTCWAKE
      Possible Setting Index: 000
      Possible Setting Friendly Name: Disable
      Possible Setting Index: 001
      Possible Setting Friendly Name: Enable
      Possible Setting Index: 002
      Possible Setting Friendly Name: Important Wake Timers Only
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

  Subgroup GUID: 2a737441-1930-4402-8d77-b2bebba308a3  (USB settings)
    Power Setting GUID: 48e6b7a6-50f5-4782-a5d4-53bb8f07e226  (USB selective suspend setting)
      Possible Setting Index: 000
      Possible Setting Friendly Name: Disabled
      Possible Setting Index: 001
      Possible Setting Friendly Name: Enabled
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

  Subgroup GUID: 4f971e89-eebd-4455-a8de-9e59040e7347  (Power buttons and lid)
    GUID Alias: SUB_BUTTONS
    Power Setting GUID: a7066653-8d6c-40a8-910e-a1f54b84c7e5  (Start menu power button)
      GUID Alias: UIBUTTON_ACTION
      Possible Setting Index: 000
      Possible Setting Friendly Name: Sleep
      Possible Setting Index: 001
      Possible Setting Friendly Name: Hibernate
      Possible Setting Index: 002
      Possible Setting Friendly Name: Shut down
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

  Subgroup GUID: 501a4d13-42af-4429-9fd1-a8218c268e20  (PCI Express)
    GUID Alias: SUB_PCIEXPRESS
    Power Setting GUID: ee12f906-d277-404b-b6da-e5fa1a576df5  (Link State Power Management)
      GUID Alias: ASPM
      Possible Setting Index: 000
      Possible Setting Friendly Name: Off
      Possible Setting Index: 001
      Possible Setting Friendly Name: Moderate power savings
      Possible Setting Index: 002
      Possible Setting Friendly Name: Maximum power savings
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

  Subgroup GUID: 54533251-82be-4824-96c1-47b60b740d00  (Processor power management)
    GUID Alias: SUB_PROCESSOR
    Power Setting GUID: 893dee8e-2bef-41e0-89c6-b55d0929964c  (Minimum processor state)
      GUID Alias: PROCTHROTTLEMIN
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000064
    Current DC Power Setting Index: 0x00000005

    Power Setting GUID: 94d3a615-a899-4ac5-ae2b-e4d8f634367f  (System cooling policy)
      GUID Alias: SYSCOOLPOL
      Possible Setting Index: 000
      Possible Setting Friendly Name: Passive
      Possible Setting Index: 001
      Possible Setting Friendly Name: Active
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

    Power Setting GUID: bc5038f7-23e0-4960-96da-33abaf5935ec  (Maximum processor state)
      GUID Alias: PROCTHROTTLEMAX
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000064
    Current DC Power Setting Index: 0x00000064

  Subgroup GUID: 7516b95f-f776-4464-8c53-06167f40cc99  (Display)
    GUID Alias: SUB_VIDEO
    Power Setting GUID: 3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e  (Turn off display after)
      GUID Alias: VIDEOIDLE
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0xffffffff
      Possible Settings increment: 0x00000001
      Possible Settings units: Seconds
    Current AC Power Setting Index: 0x00000708
    Current DC Power Setting Index: 0x00000258

    Power Setting GUID: aded5e82-b909-4619-9949-f5d71dac0bcb  (Display brightness)
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000064
    Current DC Power Setting Index: 0x00000064

    Power Setting GUID: f1fbfde2-a960-4165-9f88-50667911ce96  (Dimmed display brightness)
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000032
    Current DC Power Setting Index: 0x00000032

    Power Setting GUID: fbd9aa66-9553-4097-ba44-ed6e9d65eab8  (Enable adaptive brightness)
      GUID Alias: ADAPTBRIGHT
      Possible Setting Index: 000
      Possible Setting Friendly Name: Off
      Possible Setting Index: 001
      Possible Setting Friendly Name: On
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

  Subgroup GUID: e73a048d-bf27-4f12-9731-8b2076e8891f  (Battery)
    GUID Alias: SUB_BATTERY
    Power Setting GUID: 5dbb7c9f-38e9-40d2-9749-4f8a0e9f640f  (Critical battery notification)
      GUID Alias: BATFLAGSCRIT
      Possible Setting Index: 000
      Possible Setting Friendly Name: Off
      Possible Setting Index: 001
      Possible Setting Friendly Name: On
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

    Power Setting GUID: 637ea02f-bbcb-4015-8e2c-a1c7b9c0b546  (Critical battery action)
      GUID Alias: BATACTIONCRIT
      Possible Setting Index: 000
      Possible Setting Friendly Name: Do nothing
      Possible Setting Index: 001
      Possible Setting Friendly Name: Sleep
      Possible Setting Index: 002
      Possible Setting Friendly Name: Hibernate
      Possible Setting Index: 003
      Possible Setting Friendly Name: Shut down
    Current AC Power Setting Index: 0x00000002
    Current DC Power Setting Index: 0x00000002

    Power Setting GUID: 8183ba9a-e910-48da-8769-14ae6dc1170a  (Low battery level)
      GUID Alias: BATLEVELLOW
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x0000000a
    Current DC Power Setting Index: 0x0000000a

    Power Setting GUID: 9a66d8d7-4ff7-4ef9-b5a2-5a326ca2a469  (Critical battery level)
      GUID Alias: BATLEVELCRIT
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000005
    Current DC Power Setting Index: 0x00000005

    Power Setting GUID: bcded951-187b-4d05-bccc-f7e51960c258  (Low battery notification)
      GUID Alias: BATFLAGSLOW
      Possible Setting Index: 000
      Possible Setting Friendly Name: Off
      Possible Setting Index: 001
      Possible Setting Friendly Name: On
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

    Power Setting GUID: d8742dcb-3e6a-4b3c-b3fe-374623cdcf06  (Low battery action)
      GUID Alias: BATACTIONLOW
      Possible Setting Index: 000
      Possible Setting Friendly Name: Do nothing
      Possible Setting Index: 001
      Possible Setting Friendly Name: Sleep
      Possible Setting Index: 002
      Possible Setting Friendly Name: Hibernate
      Possible Setting Index: 003
      Possible Setting Friendly Name: Shut down
    Current AC Power Setting Index: 0x00000000
    Current DC Power Setting Index: 0x00000000

    Power Setting GUID: f3c5027d-cd16-4930-aa6b-90db844a8f00  (Reserve battery level)
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000007
    Current DC Power Setting Index: 0x00000007

我真的不明白这些...

如何使用脚本自动将电源选项更改为上面发布的设置,因为我不想手动进行?

windows-10 command-line
  • 2 个回答
  • 20524 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-14 01:06:53 +0800 CST

如何将 .lnk 文件固定到 PowerShell 中的任务栏?

  • 10

我在 stackoverflow.com 上看到过很多类似的问题,但这次不同,在您想知道之前,我为什么不在 stackoverflow.com 上发布问题?因为我目前被禁止在那里提问,而且我目前没有足够的时间来编辑所有这些问题。

简要说明我想做的事情:我想以编程方式将提升的 cmd、powershell、pwsh、python 等固定到任务栏,当然我知道如何使用 explorer.exe 创建快捷方式并固定它们,但我考虑使用 GUI方法很累很乏味,必须点击多次才能完成一个简单的工作,我想钉很多程序......

我发现了这个:

如何使用 Powershell 创建以管理员身份运行的快捷方式

一个例子:

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\PowerShell.lnk")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe"
$Shortcut.Save()
$bytes = [System.IO.File]::ReadAllBytes("$Home\Desktop\PowerShell.lnk")
$bytes[0x15] = $bytes[0x15] -bor 0x20
[System.IO.File]::WriteAllBytes("$Home\Desktop\PowerShell.lnk", $bytes)

该示例将在具有管理员权限的桌面上创建一个名为“PowerShell”的默认 PowerShell 快捷方式。

现在,将其包装在一个函数中:

function admin-shortcut {
  PARAM (
    [Parameter(ValueFromPipeline=$true, Mandatory=$true, Position=0)] [system.string] $path,
    [Parameter(ValueFromPipeline=$true, Mandatory=$true, Position=1)] [system.string] $name
    )
    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut = $WshShell.CreateShortcut("$Home\Desktop\$name.lnk")
    $Shortcut.TargetPath = $path
    $Shortcut.Save()
    $bytes = [System.IO.File]::ReadAllBytes("$Home\Desktop\$name.lnk")
    $bytes[0x15] = $bytes[0x15] -bor 0x20
    [System.IO.File]::WriteAllBytes("$Home\Desktop\$name.lnk", $bytes)
}

我在 stackoverflow.com 上看到了很多关于将程序直接固定到任务栏的方法的帖子,但没有一个能解决我的问题,因为我想给固定的快捷方式管理员权限,我见过的方法都没有。

所以我用谷歌搜索了如何使用PowerShell创建管理员快捷方式,找到了上面提到的方法,现在我只需要弄清楚如何将.lnk文件固定到任务栏,不幸的是所有谷歌搜索结果都是“如何将快捷方式固定到任务栏”谈论直接固定程序,它们都不涉及 .lnk 文件,我已经解释了为什么它们在这种情况下不起作用。

那么你有什么想法吗?任何帮助将不胜感激。


不再适用于 Windows 10 的过时方法:

方法#1

$shell = new-object -com "Shell.Application"  
$folder = $shell.Namespace((Join-Path $env:SystemRoot System32\WindowsPowerShell\v1.0))
$item = $folder.Parsename('powershell_ise.exe')
$item.invokeverb('taskbarpin');

方法#2

$shell = new-object -com "Shell.Application"  
$folder = $shell.Namespace('C:\Windows')    
$item = $folder.Parsename('notepad.exe')
$verb = $item.Verbs() | ? {$_.Name -eq 'Pin to Tas&kbar'}
if ($verb) {$verb.DoIt()}

方法#3

$sa = new-object -c shell.application
$pn = $sa.namespace($env:windir).parsename('notepad.exe')
$pn.invokeverb('taskbarpin')

我将所有这些代码粘贴到 PowerShell 中,没有出现错误消息,但是这些命令实际上什么也没做,我什至重新启动了 explorer.exe,仍然没有观察到任何变化......


但不,等等!一切都没有丢失,我可以将生成的快捷方式拖动到任务栏以将其固定到任务栏,我可以右键单击并固定开始,但想象一下拖动 2 打...如果我能弄清楚这些动作到底是做什么的,我可以用命令复制它们......


我已经打开%Appdata%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

文件夹并发现我固定的一些(非 UWP)应用程序图标确实在那里,

我在这里找到了一些添加到开始菜单的应用程序图标:

%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu

但是,我已经确认简单地复制那里的快捷方式是行不通的。

发现这个:https ://docs.microsoft.com/en-us/windows/configuration/configure-windows-10-taskbar ,它很有用。


我找到了一种方法来做到这一点,因为我只想在 xml 文件中添加行,我可以使用它:

[string[]]$xmlconfig=get-content $template | % {
    $_
    if ($_ -match $pattern) {$line}
}

我知道这很愚蠢,这就是为什么我没有将其发布为答案,但它确实完成了工作,不要嘲笑我,因为我还在学习,我目前正在研究如何正确操作 .xml 文件。 ..

我试过了:

[xml]$template=Get-Content $templatefile
$template.SelectNodes("//DesktopApp")

但它不起作用,它也不适用于从 .admx 文件转换的 xml 对象,但是 .ChildNodes 有效,Get-Member 没有显示它......我认为将它视为纯文本文件是最好的现在方法,否则我必须使用这样的东西:

$template.LayoutModificationTemplate.CustomTaskbarLayoutCollection.TaskbarLayout.TaskbarPinList.DesktopApp.DesktopApplicationLinkPath

我已经解决了,我现在将其作为答案发布,我没有追求注册表项,并且我不再想将程序固定到开始菜单,因为我通常不使用它...

windows-10 powershell
  • 2 个回答
  • 8218 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-11 01:14:39 +0800 CST

如何使用注册表为所有驱动器上的所有用户禁用 $Recycle.Bin 并在 Windows 10 20H2 中默认显示删除确认框?

  • 9

快速总结:我是一个修补匠,我讨厌点击 GUI,我不需要$Recycle.Bin,所以我想通过Set-ItemProperty修改注册表来禁用它。

如标题所示,我想使用 regedit.exe (我知道reg add和东西,但我不使用reg,而是使用Set-ItemProperty和它的群组来完成工作,我想将所有命令放在一个文件中)和 gpedit.msc (再次注册表,因为组策略设置存储在注册表中)以禁用$Recycle.Bin所有驱动器并默认显示删除确认框,这意味着同时修改HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER。

简而言之,想要的效果是,当任何用户(所有用户帐户都是我拥有的管理员帐户,因为我是唯一的用户,因为用户帐户可能会变坏并且一旦它们变坏就很难修复帐户,如果在计算机运行时发生停电,它们很容易变坏......)点击删除任何驱动器上的文件,弹出删除确认框;确认后,文件将被直接删除,无需通过 $Recycle.Bin。并且驱动器的任何根目录中都不存在这个不可删除的 $Recycle.Bin 文件夹。

我当然知道这一点:

在此处输入图像描述

这正是我想要避免的。因为我必须手动单击Don't move files to the Recycle Bin...每个驱动器的复选框。我也无法摆脱这个$Recycle.Bin文件夹,如果我删除它,它会神奇地重新出现F5...

经过一番谷歌搜索后,我找到了这个注册表项和值:

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket]
"NukeOnDelete"=dword:00000001

但是消息来源说它适用于 Windows 7,我从未使用过 Windows 7,该值是否会阻止 $Recycle.Bin 的重新创建?它仍然适用于 Windows 10 吗?

我还发现了这个:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRecycleFiles"=dword:00000001

但是,当我尝试在 regedit 中打开该路径时,会播放错误声音并且当前位置未更改,因此路径不存在...

和这个:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ConfirmFileDelete"=dword:00000001

这似乎启用了“删除确认对话框”,我不知道的是,这个设置会影响所有驱动器吗?它是否显示对话框,然后在确认 $Recycle.Bin 未禁用后将文件移动到 $Recycle.Bin 吗?

如何默认为所有用户和所有驱动器禁用 $Recycle.Bin?以及如何防止 $Recycle.Bin 返回?任何帮助表示赞赏。


更新

奇怪的是,我启用Do not move deleted files to the Recycle Bin了策略,仍然可以在注册表中访问 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer... 刚按下F5并找到了键...


更新1

启用上述所有设置后,我尝试使用资源管理器删除 $Recycle.Bin 文件夹,结果:它们在按下后重新出现F5

使用过,到目前为止rd X:\$Recycle.Bin /s /q多次按下后它们没有再次出现F5,我不知道为什么,我认为它与在 explorer.exe 中删除它的效果相同......


但是有什么作用Don't move file to the Recycle Bin. Remove files immediately when deleted.呢?它写入什么注册表项和值?谁能告诉我?


$Recycle.Bin 文件夹重新出现...我已经确认,单击“回收站”文件夹将重新创建 $Recycle.Bin 文件夹...


我使用了 procmon 并得到了这个: 在此处输入图像描述

似乎Don't move...在当前驱动器上将 nukeondelete 设置为启用。


我编写了一个 PowerShell 脚本,使用 Get-Volume 和 Set-ItemProperty 自动禁用所有驱动器上的回收站;

这是我提到的脚本,我把它贴在这里以防其他人可能想要这样做:

$volumes=Get-Volume | where {$_.FileSystem -eq "NTFS"}
$Drives=foreach ($volume in $volumes) {
    $DriveLetter=$Volume.DriveLetter
    [string]$ObjectId=($Volume.ObjectId | Select-String -Pattern "Volume{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}}\\").Matches.Value.SubString(6,38)
    Remove-Item -Path $('{0}:\$Recycle.Bin' -f $DriveLetter) -Force -Recurse -ErrorAction SilentlyContinue
    New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -ErrorAction SilentlyContinue | Out-Null
    Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -Name NukeOnDelete -Type DWord -Value 1
    Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -Name MaxCapacity -Type DWord -Value 0
}
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name NukeOnDelete -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name MaxCapacity -Type DWord -Value 0

我现在正在寻找防止创建 $Recycle.Bin 的方法,我正在考虑组策略和安全选项。

我发现了这个:**GPO - 如何阻止在 Windows 10 的根目录中创建文件夹和文件

不知道它是否会起作用(我只是想阻止回收站),以及如何使用安全选项来做到这一点?

windows-10 windows-registry
  • 1 个回答
  • 2905 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-09 02:55:03 +0800 CST

如何在 Windows 10 机器上不使用 USB 闪存驱动器直接将 Fedora 33 安装到硬盘?

  • 6

在以前的主板“退役”后,我的电脑升级了。我的电脑现在是 BIOSTAR Group H81MHV3 上的 Intel Core i5-4430(我知道它们很旧),配备 12GB RAM(8GB + 4GB DDR3)。

我现在有三个内置硬盘,都是希捷。一个 500 GB 是原始的;一个 2TB 重新分配了 10319 个扇区,我知道你在想什么,但是磁盘有 5103 个备用扇区,模拟扇区大小为 512 字节,而物理扇区大小为 4096 字节,因此仅使用了 0.25276797961983147168332353517539 个备用扇区,并且坏扇区有在无数天里数量没有增加。另一种是新买的1TB,没有坏道。

我已经下载了 Fedora-Workstation-Live-x86_64-33-1.2.iso,我使用 PowerShell 检查了它的哈希并确认它是好的。我使用的是 Windows 10 20H2,我有一个非常慢的 16 GB micro SD 卡,插入读卡器,我专门将它用作 Windows 预安装环境应急媒体,我不打算将 livecd 刻录到它。

我能够使用diskpart和 DiskGenius,我可以通过使用 和 来干净安装 Windows 而不会出现问题,diskpart但是我使用的方法不允许我将 Linux 发行版安装到我的硬盘上。有什么方法可以直接将 Fedora 33 安装到我的硬盘驱动器并使其可启动,而无需在 Windows 环境中使用 liveUSB?dismbcdboot


更新

好的,我知道我可以通过简单地格式化USB驱动器,将liveCD刻录到它,启动到liveUSB,安装到硬盘驱动器,EasyBCD并最终重新制作WinPE来实现这一点,但是这些东西很愚蠢,我为什么要全部当我现在可以重新分区磁盘并有空的硬盘可用时需要额外的步骤吗?

windows-10 linux
  • 1 个回答
  • 3016 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-09 01:35:54 +0800 CST

当计算机关闭时,RAM 中的哪些数据会丢失,哪些数据还保留?

  • 6

正如标题中所说,RAM中的哪些数据会丢失,而断电时哪些数据不会丢失?

我只是好奇。我知道 RAM 代表随机存取存储器,是易失性的(需要电源来存储数据),并且比非易失性存储器(即 HDD、SSD)具有更高的读/写速度。

我知道如果可以写入的可用RAM不多,我可以通过重新启动来清空RAM空间,重新启动后RAM中的所有内容似乎都丢失了,它们占用的空间被释放,因此空间再次可用。

但是,所有数据都丢失绝对不是真的。据我所知,计算机的时钟不会通过重新启动来重置,它仍然会显示正确的时间,即使我完全关闭并拔下电源线。

而它在关闭后仍然可以启动,这意味着用于启动操作系统的启动代码仍在 RAM 中,否则它根本无法启动。

那么,当您关闭计算机时,哪些数据会丢失,哪些数据会保留在主内存中?

memory
  • 1 个回答
  • 589 Views
Martin Hope
Ξένη Γήινος
Asked: 2021-01-04 02:37:59 +0800 CST

如何将 .reg 文件自动转换为 PowerShell set-itemproperty 命令?

  • 10

我是一个经常修改注册表的修补匠,我讨厌不得不.reg一个一个地单击许多文件;如何自动将.reg文件转换为 PowerShellSet-ItemProperty命令?

  • 我找到了一个这样做的站点 [ Registry to PowerShell Converter ],但是输出不是我想要的格式;Set-ItemProperty我希望它使用/ Remove-Item/具有与以下完全相同的语法,仅此New-Item而已:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\PushNotifications]
    "NoToastApplicationNotification"=dword:00000001
    
    • cmd:
      Reg Add "HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" /v "NoToastApplicationNotification" /t REG_DWORD /d 1
      
    • powershell:
      Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" -Name "NoToastApplicationNotification" -Type DWord -Value 1
      

  • 产生预期结果的命令应该是:
    "Set-ItemProperty -Path " + $path + "-Name " + $name + "-Value " + $value
    
    • 我创建了一个 ASCII 表,其中包含在此处找到并上传到此处的信息,管理此 [输出]:
      $ASCII=import-csv ".\desktop\ascii.csv"
      [array]$AsciiTable=0..255 | foreach-object{
        $Decimal=$ASCII[$_].DEC
        $Hexadecimal=$ASCII[$_].HEX
        $Binary=$ASCII[$_].BIN
        $Octonary=$ASCII[$_].OCT
        $Symbol=$ASCII[$_].Symbol
        $Value=[char]$_
        $Description=$ASCII[$_].Description
        $HTMLName=$ASCII[$_].HTMLName
        $HTMLNumber=$ASCII[$_].HTMLNumber
        [pscustomobject]@{Decimal=$Decimal;Hexadecimal=$Hexadecimal;Binary=$Binary;Octonary=$Octonary;Symbol=$Symbol;Value=$Value;Description=$Description;HTMLName=$HTMLName;HTMLNumber=$HTMLNumber}
      }
      $AsciiTable | Export-csv ".\Desktop\AsciiTable.csv"
      


目前我已经管理了这个,这是不完整的,但想法是通过文件循环index,通过正则表达式匹配为变量分配值,将类型和配置单元名更改为 PowerShell 中使用的值:

$registry=get-content $regfile

for ($i=0;$i -lt $registry.count;$i++){
  $line=$registry | select-object -index $i
  if ($line -match '\[' -and '\]') {
    $path=$line -replace '\[|\]'
    switch ($path)
    {
      {$path -match "HKEY_CLASSES_ROOT"}    {$path=$path -replace "HKEY_CLASSES_ROOT","HKCR:"}
      {$path -match "HKEY_CURRENT_USER"}    {$path=$path -replace "HKEY_CURRENT_USER","HKCU:"}
      {$path -match "HKEY_LOCAL_MACHINE"}   {$path=$path -replace "HKEY_LOCAL_MACHINE","HKLM:"}
      {$path -match "HKEY_USERS"}           {$path=$path -replace "HKEY_USERS","HKU:"}
      {$path -match "HKEY_CURRENT_CONFIG"}  {$path=$path -replace "HKEY_CURRENT_CONFIG","HKCC:"}
    }
  }
  else {
    $name=($line | select-string -pattern "`"([^`"=]+)`"").matches.value | select-object -first 1
    switch ($line)
  {
  {$line -match}
}


有六种注册表值类型 [ REG_SZ, REG_BINARY, REG_DWORD, REG_QWORD, REG_MULTI_SZ, REG_EXPAND_SZ] 并且我在文件中只看到一种DWORD值类型.reg,尽管我设法创建了一个包含所有类型的注册表项:

  • RegEdit:
    在此处输入图像描述
  • .reg:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AarSvc]
    "DependOnService"=hex(7):41,00,75,00,64,00,69,00,6f,00,73,00,72,00,76,00,00,00,\
      00,00
    "Description"="@%SystemRoot%\\system32\\AarSvc.dll,-101"
    "DisplayName"="@%SystemRoot%\\system32\\AarSvc.dll,-100"
    "ErrorControl"=dword:00000001
    "FailureActions"=hex:80,51,01,00,00,00,00,00,00,00,00,00,04,00,00,00,14,00,00,\
      00,01,00,00,00,10,27,00,00,01,00,00,00,10,27,00,00,01,00,00,00,10,27,00,00,\
      00,00,00,00,00,00,00,00
    "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
      74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
      00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
      6b,00,20,00,41,00,61,00,72,00,53,00,76,00,63,00,47,00,72,00,6f,00,75,00,70,\
      00,20,00,2d,00,70,00,00,00
    "ObjectName"="NT Authority\\LocalService"
    "RequiredPrivileges"=hex(7):53,00,65,00,49,00,6d,00,70,00,65,00,72,00,73,00,6f,\
      00,6e,00,61,00,74,00,65,00,50,00,72,00,69,00,76,00,69,00,6c,00,65,00,67,00,\
      65,00,00,00,00,00
    "ServiceSidType"=dword:00000001
    "Start"=dword:00000003
    "Type"=dword:00000060
    "UserServiceFlags"=dword:00000003
    "New Value #1"=hex(b):00,00,00,00,00,00,00,00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AarSvc\Parameters]
    "ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\
      00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\
      41,00,61,00,72,00,53,00,76,00,63,00,2e,00,64,00,6c,00,6c,00,00,00
    "ServiceDllUnloadOnStop"=dword:00000001
    "ServiceMain"="ServiceMain"
    


如何在 a 中确定注册表类型.reg,因为预期的最终结果是包含转换后的命令的文本文件/字符串数组/PowerShell 脚本?

  • 在 a.reg中,我知道 type 的值REG_DWORD写为dword,REG_SZ用引号括起来的纯文本,REG_QWORD如qword(此处所示),并且已经将注册表类型映射到其相应的 PowerShell 属性:
    REG_SZ        → String
    REG_EXPAND_SZ → ExpandString
    REG_MULTI_SZ  → MultiString
    REG_BINARY    → Binary
    REG_DWORD     → DWord
    REG_QWORD     → QWord
    
    从上面推断的关系:
    switch ($line)
    {
      {$line -match '"="'}      {$type="string"}
      {$line -match "dword"}    {$type="dword"}
      {$line -match "qword"}    {$type="qword"}
      {$line -match "hex\(2\)"} {$type="expandstring";break}
      {$line -match "hex\(7\)"} {$type="multistring";break}
      {$line -match "hex\(b\)"} {$type="qword";break}
      {$line -match "hex"}      {$type="binary"}
    }
    


如何检测和解码注册表 hex babbles 以及是否有其他方法可以在 a 中写入REG_EXPAND_SZ、REG_MULTI_SZ和REG_BINARYtypes .reg(即分别为 as和ExpandStringtype )?MultiStringBinary

  • 将注册表可扩展字符串值解析为纯文本的脚本:
    function parse-expandstring {
      PARAM (
        [Parameter(ValueFromPipeline=$true, Mandatory=$true)] [System.String]$expandstring
      )
    
      $AsciiTable=import-csv ".\desktop\AsciiTable.csv"
      [array]$hex=$expandstring -split'[\,\\]' | where {-not ([string]::IsNullOrWhiteSpace($_))} | %{$_.trimstart()}
      $hexadecimal=0..($hex.count-1) | where {$_ % 2 -ne 1} | foreach-object {$hex[$_]}
      $text=@()
      foreach ($hexadecima in $hexadecimal) {
        for ($i=0;$i -le 255;$i++) {
          if ($AsciiTable[$i].hexadecimal -eq $hexadecima) {
            $text+=$AsciiTable[$i].value
          }
        }
      }
      $text=$text -join ""
      $text
    }
    
  • Function解析REG_QWORD:
    function parse-qword {
      PARAM (
        [Parameter(ValueFromPipeline=$true, Mandatory=$true)] [System.String]$qword
      )
      [array]$qword=$qword -split','
      $qword=for ($i=$qword.count-1;$i -ge 0;$i--) {$qword[$i]}
      $hexvalue=$qword -join ""
      $hexvalue=$hexvalue.trimstart("0")
      $hexvalue
    }
    
  • Function解析REG_BINARY:
    function parse-binary {
      PARAM (
        [Parameter(ValueFromPipeline=$true, Mandatory=$true)] [System.String]$binary
      )
      [array]$hex=$binary -split'[,\\]' | where {-not ([string]::IsNullOrWhiteSpace($_))} | %{$_.trimstart()}
      $hex=$hex -join ""
        $hex
    }
    
  • Function解析REG_MULTI_SZ:
    function parse-multistring {
      PARAM (
        [Parameter(ValueFromPipeline=$true, Mandatory=$true)] [System.String]$multistring
        )
    
      $AsciiTable=import-csv ".\desktop\AsciiTable.csv"
      [array]$hex=$multistring -split'[\,\\]' | where {-not ([string]::IsNullOrWhiteSpace($_))} | %{$_.trimstart()}
      $hexadecimal=0..($hex.count-1) | where {$_ % 2 -ne 1} | foreach-object {$hex[$_]}
      $text=@()
      foreach ($hexadecima in $hexadecimal) {
        for ($i=0;$i -le 255;$i++) {
          if ($AsciiTable[$i].hexadecimal -eq $hexadecima) {
            if ($i -ne 0) {$text+=$AsciiTable[$i].value}
            else {$text+="\0"}
          }
        }
      }
      $text=$text -join ""
      $text
    }
    


脚本几乎完成了,已经创建了Remove-Item, New-Item, 和Remove-ItemPropertyswitch 条件;现在,难题的最后一部分是编写一个匹配值的正则表达式。完成后,我将在此处发布它作为答案。

  • 伪代码:
    if $line match [ and ]->$line match [-HKEY -> Remove-Item
    else $registry[$i+1] eq ""->New-Item
    elseif $line match "=-" -> Remove-ItemProperty
    
  • 我创建了一个 ASCII 哈希表用作字典:
    $asciihex=@{}
    0..255 | % {
      $number=$_
      [string]$hex=$number.tostring('x')
      if ($hex.length -eq 1) {$hex='{1}{0}' -f $hex,'0'}
      $char=[char]$number
      $asciihex.add($hex,$char)
      }
    
    • 要在给定代码点查找字符:
      # Change:
        $asciihex.'00'
      
      # to:
        $asciihex.'ff'
      
    • 要在任何代码点查找字符:
      # Don't use $asciihex to print it
        $asciihex.$codepoint
      

要从行中 grep 值,请使用-replace $name+$type获取值。

powershell command-line
  • 2 个回答
  • 3413 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve