无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog
打印 上一主题 下一主题

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

    [复制链接]
17011#
发表于 2022-5-14 20:35:00 | 只看该作者
本帖最后由 527104427 于 2022-5-14 20:36 编辑


还有更简单的,一句SED搞定:

#code=936T950
ENVI^ EnviMode=1
ENVI^ ForceLocal=1

set$ nl=0D 0A
set 内容=
\[AAAA]%NL%
\SDFDSFD%NL%
\[BBBBBBB]%NL%
\SDFSDF%NL%
\323423434%NL%
\[AAAA]%NL%
\SDFSDFDSFDS%NL%
\[AAAA]

sed -ex a=?,\[BBBBBBB\]%nl%*?{\a+}*?%nl%*?{\a+}*?%nl%*?\[,b,内容

mess. %b%





点评

大致看了一下,sed命令对已知行数有效,如果不是固定的行数应该会出错  详情 回复 发表于 2022-5-14 20:43
还有这种操作,感谢分享  详情 回复 发表于 2022-5-14 20:40
回复

使用道具 举报

17012#
发表于 2022-5-14 20:40:56 | 只看该作者
527104427 发表于 2022-5-14 20:35
还有更简单的,一句SED搞定:

#code=936T950

还有这种操作,感谢分享
回复

使用道具 举报

17013#
发表于 2022-5-14 20:43:00 | 只看该作者
527104427 发表于 2022-5-14 20:35
还有更简单的,一句SED搞定:

#code=936T950

大致看了一下,sed命令对已知行数有效,如果不是固定的行数应该会出错

点评

试一下不就知道了: #code=936T950 ENVI^ EnviMode=1 ENVI^ ForceLocal=1 set$ nl=0D 0A set 内容= \[AAAA]%NL% \SDFDSFD%NL% \%NL% \SDFSDF%NL% \323423434%NL% \323423434%NL% \323423434%NL% \3  详情 回复 发表于 2022-5-14 21:00
回复

使用道具 举报

17014#
发表于 2022-5-14 20:51:49 | 只看该作者
对了,dismapi能用pecmd调用吗
https://docs.microsoft.com/zh-cn ... ple?view=windows-11

点评

常规的DLL的C调用API,用PECMD基本都行的。  详情 回复 发表于 2022-5-14 21:17
回复

使用道具 举报

17015#
发表于 2022-5-14 21:00:33 | 只看该作者
本帖最后由 527104427 于 2022-5-14 21:03 编辑
826773297 发表于 2022-5-14 20:43
大致看了一下,sed命令对已知行数有效,如果不是固定的行数应该会出错

试一下不就知道了:
{\a+}*?%nl%*? 就是表示有一行也行,有N行也行,写一个就可以了,我上面写了两个,有点啰嗦

#code=936T950
ENVI^ EnviMode=1
ENVI^ ForceLocal=1

set$ nl=0D 0A
set 内容=
\[AAAA]%NL%
\SDFDSFD%NL%
\[BBBBBBB]%NL%
\SDFSDF%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\323423434%NL%
\[AAAA]%NL%
\SDFSDFDSFDS%NL%
\[AAAA]

sed -ex a=?,\[BBBBBBB\]%nl%*?{\a+}*?%nl%*?\[,b,内容

mess. --%a%--%b%--

点评

确实可以,感谢分享,我看到有几个%nl%,以为是指定的几行内容  详情 回复 发表于 2022-5-14 21:04
回复

使用道具 举报

17016#
发表于 2022-5-14 21:04:44 | 只看该作者
527104427 发表于 2022-5-14 21:00
试一下不就知道了:
{\a+}*?%nl%*? 就是表示有一行也行,有N行也行,写一个就可以了,我上面写了两个, ...

确实可以,感谢分享,我看到有几个%nl%,以为是指定的几行内容
回复

使用道具 举报

17017#
发表于 2022-5-14 21:17:34 | 只看该作者
826773297 发表于 2022-5-14 20:51
对了,dismapi能用pecmd调用吗
https://docs.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/ ...

常规的DLL的C调用API,用PECMD基本都行的。
  1. ENVI &&DismLogErrorsWarningsInfo=2
  2. CALL $--qd --cd --ret:&&DismInitializeRet %&SystemROOT%\System32\DismApi.dll,DismInitialize,#%&DismLogErrorsWarningsInfo%,$C:\MyLogFile.txt,#0
  3. MESS. %&error%<%&DismInitializeRet%>
复制代码

点评

返回0  详情 回复 发表于 2022-5-14 21:26
回复

使用道具 举报

17018#
发表于 2022-5-14 21:26:07 | 只看该作者
红毛樱木 发表于 2022-5-14 21:17
常规的DLL的C调用API,用PECMD基本都行的。

返回0

点评

S_OK=0 没问题的  详情 回复 发表于 2022-5-14 21:28
回复

使用道具 举报

17019#
发表于 2022-5-14 21:28:26 | 只看该作者

S_OK=0
没问题的
回复

使用道具 举报

17020#
 楼主| 发表于 2022-5-14 22:04:50 | 只看该作者
826773297 发表于 2022-5-14 20:02
DEVI的*INF参数有点卡,pnputil显示很快

不涉及驱动(如INF), 那会很快的。
回复

使用道具 举报

17021#
 楼主| 发表于 2022-5-14 22:08:43 | 只看该作者
826773297 发表于 2022-5-14 19:54
没安装网卡驱动的情况下好像是显示所有硬件id

网卡Net 可用 GUID {4D36E972-E325-11CE-BFC1-08002BE10318}
TEAM DEVI listdev:&V *devclass:~{4D36E972-E325-11CE-BFC1-08002BE10318} *inf=detail *inf=1  | MESS. %&V%

TEAM DEVI listdev:&V *devclass:~{4D36E972-E325-11CE-BFC1-08002BE10318} *inf=detail *inf=0  | MESS. %&V%

TEAM DEVI listdev:&V *devclass:~{4D36E972-E325-11CE-BFC1-08002BE10318} *inf=detail| MESS. %&V%

点评

其实用devclass最不靠谱了,系统里如果网卡驱动没有安装的时候,devclass属性是没有的。 意思就是,设备如果没有安装驱动,很多情况下都没有devclass属性的  详情 回复 发表于 2022-5-14 22:16
回复

使用道具 举报

17022#
发表于 2022-5-14 22:16:28 | 只看该作者
mdyblog 发表于 2022-5-14 22:08
网卡Net 可用 GUID {4D36E972-E325-11CE-BFC1-08002BE10318}
TEAM DEVI listdev:&V *devclass:~{4D36E97 ...

其实用devclass最不靠谱了,系统里如果网卡驱动没有安装的时候,devclass属性是没有的。

意思就是,设备如果没有安装驱动,很多情况下都没有devclass属性的
回复

使用道具 举报

17023#
 楼主| 发表于 2022-5-14 22:24:57 | 只看该作者
本帖最后由 mdyblog 于 2022-5-14 22:34 编辑
826773297 发表于 2022-5-14 19:39
PECMD如何从指定的行继续向下查找一个匹配的行号
ENVI$ &NL=0D 0A
ENVI 内容=

用 .*?
? 表示  匹配【最短】的   字符串。
  
结尾[前必须是%NL%吗? 是的话, %NL%[ 就是结尾。

//不限定%NL%[
sed -ex a=?,\[BBBBBBB\].*?\[,b,内容
MESS a=[%a%] b=%b%

//必须%NL%[
sed -ex a=?,\[BBBBBBB\].*?%NL%\[,b,内容
MESS a=[%a%] b=%b%



点评

好的,已成功  详情 回复 发表于 2022-5-15 08:15
回复

使用道具 举报

17024#
 楼主| 发表于 2022-5-14 22:54:58 | 只看该作者
本帖最后由 mdyblog 于 2022-5-15 10:22 编辑
826773297 发表于 2022-5-14 20:02
DEVI的*INF参数有点卡,pnputil显示很快

试试 没有devclass 的设备:
TEAM DEVI listdev:&V *devclass:{00000000-0000-0000-0000-000000000000}  |MESS. %&V%
排除 没有devclass 的设备:
TEAM DEVI listdev:&V *devclass:!{00000000-0000-0000-0000-000000000000}  *inf=base|MESS. %&V%


点评

这一招很Nice  发表于 2022-5-14 23:10
回复

使用道具 举报

17025#
发表于 2022-5-15 08:15:09 | 只看该作者
mdyblog 发表于 2022-5-14 22:24
用 .*?
? 表示  匹配【最短】的   字符串。
  

好的,已成功
回复

使用道具 举报

17026#
发表于 2022-5-15 10:43:55 | 只看该作者
m大,pecmd能实现这个api吗

点评

////下面按实际准备数据 SET &driverpackinfpath=D:\Src\A.ING SET &Flags=0x00 SET &ProcessArch=0x0000 SET &LocalName=. SET &LocalName=. SET &cchDestInfPath=*8 0 SET-ptr cchDestInfPath=8192 //整  详情 回复 发表于 2022-5-15 11:24
看上去就是C的api调用,可以的呀  详情 回复 发表于 2022-5-15 11:17
回复

使用道具 举报

17027#
发表于 2022-5-15 11:17:54 来自手机 | 只看该作者
826773297 发表于 2022-5-15 10:43
m大,pecmd能实现这个api吗

看上去就是C的api调用,可以的呀

点评

来个例子  详情 回复 发表于 2022-5-15 11:22
回复

使用道具 举报

17028#
发表于 2022-5-15 11:22:09 | 只看该作者
红毛樱木 发表于 2022-5-15 11:17
看上去就是C的api调用,可以的呀

来个例子
回复

使用道具 举报

17029#
 楼主| 发表于 2022-5-15 11:24:11 | 只看该作者
本帖最后由 mdyblog 于 2022-5-15 18:57 编辑
826773297 发表于 2022-5-15 10:43
m大,pecmd能实现这个api吗

ENVI^ EnviMode=1
SET &PROCESSOR_ARCHITECTURE_ARM64=12
////下面按实际准备数据
SET &inf=D:\Src\A.INF
SET &Flags=0x00000080
SET &ProcessArch=%&PROCESSOR_ARCHITECTURE_ARM64%
SET &LocaleName=en-US

SET$ &cchDestInfPath=*8 0
SET-ptr cchDestInfPath=8192  //整数
SET &TargetSystemRoot=D:\DstSYS007\Windows
SET &TargetSystemDrive=D:\DstSYS007

SET$ &DestInfpath_buf=*8192 0     //buffer
ENVI-addr  &&DestInfpath_buf_adr=&DestInfpath_buf
SET$ &DestInfpath=*8192 0     //StringBuilder 的C结构是什么?  太复杂, 自己查,重新实际生成

SET-ptr &DestInfpath=0  //链表m_Data_ptr
SET-ptr &DestInfpath=%DestInfpath_buf_adr%:~1  //链表m_Data_buf
SET-ptr &DestInfpath=8192:~2  //长度m_totalSize=8192

//class StringBuilder {
//  typedef std::basic_string<chr> string_t;
//  typedef std::list<string_t> container_t; // Reasons not to use vector below.
//  typedef typename string_t::size_type size_type; // Reuse the size type in the string.
//  container_t m_Data;
//  size_type m_totalSize;};

//------------------------------------------------------
//调用
CALL $--ret:&&ret   --qd  drvstore.dll,DriverStoreOfflineAddDriverPackageW,*&inf,#%&Flags%,#0,#%&ProcessArch%,*&LocaleName,*&DestInfpath,*&cchDestInfPath,*&TargetSystemRoot,*&TargetSystemDrive
//如果是C调用的, --qd 后加个 --c
//-------------------------
MESS.  ret=[%&ret%]  


SET?ptr cchDestInfPath=&&v_cchDestInfPath  //整数
MESS cchDestInfPath=[%&v_cchDestInfPath%]

点评

M大,看看能不能帮忙转成pecmd  详情 回复 发表于 2022-5-15 18:28
好的,感谢m大  详情 回复 发表于 2022-5-15 11:33
回复

使用道具 举报

17030#
发表于 2022-5-15 11:33:32 | 只看该作者
mdyblog 发表于 2022-5-15 11:24
////下面按实际准备数据
SET &driverpackinfpath=D:\Src\A.ING
SET &Flags=0x00

好的,感谢m大
回复

使用道具 举报

17031#
发表于 2022-5-15 18:28:07 | 只看该作者
mdyblog 发表于 2022-5-15 11:24
ENVI^ EnviMode=1
SET &PROCESSOR_ARCHITECTURE_ARM64=12
////下面按实际准备数据

M大,看看能不能帮忙转成pecmd
  1. /*
  2. Copyright (c) 2017-2021, The LumiaWOA Authors
  3. Permission is hereby granted, free of charge, to any person obtaining a copy
  4. of this software and associated documentation files (the "Software"), to deal
  5. in the Software without restriction, including without limitation the rights
  6. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. copies of the Software, and to permit persons to whom the Software is
  8. furnished to do so, subject to the following conditions:
  9. The above copyright notice and this permission notice shall be included in all
  10. copies or substantial portions of the Software.
  11. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  12. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  13. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  14. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  15. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  16. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  17. SOFTWARE.
  18. */
  19. using System;
  20. using System.Runtime.InteropServices;
  21. using System.Text;

  22. namespace DriverUpdater
  23. {
  24.     internal static class NativeMethods
  25.     {
  26.         internal enum ProcessorArchitecture : ushort
  27.         {
  28.             PROCESSOR_ARCHITECTURE_INTEL = 0,
  29.             PROCESSOR_ARCHITECTURE_MIPS = 1,
  30.             PROCESSOR_ARCHITECTURE_ALPHA = 2,
  31.             PROCESSOR_ARCHITECTURE_PPC = 3,
  32.             PROCESSOR_ARCHITECTURE_SHX = 4,
  33.             PROCESSOR_ARCHITECTURE_ARM = 5,
  34.             PROCESSOR_ARCHITECTURE_IA64 = 6,
  35.             PROCESSOR_ARCHITECTURE_ALPHA64 = 7,
  36.             PROCESSOR_ARCHITECTURE_MSIL = 8,
  37.             PROCESSOR_ARCHITECTURE_AMD64 = 9,
  38.             PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10,
  39.             PROCESSOR_ARCHITECTURE_NEUTRAL = 11,
  40.             PROCESSOR_ARCHITECTURE_ARM64 = 12,
  41.             PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 = 13,
  42.             PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 = 14,
  43.         }

  44.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreOpenW", SetLastError = true, CharSet = CharSet.Unicode)]
  45.         internal static extern IntPtr DriverStoreOpenW(
  46.             string TargetSystemRoot,
  47.             string TargetSystemDrive,
  48.             uint Flags,
  49.             IntPtr Reserved);

  50.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreOpenW", SetLastError = true, CharSet = CharSet.Unicode)]
  51.         internal static extern bool DriverStoreClose(IntPtr hDriverStore);

  52.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreUnreflectCriticalW", SetLastError = true, CharSet = CharSet.Unicode)]
  53.         internal static extern int DriverStoreUnreflectCriticalW(
  54.             IntPtr hDriverStore,
  55.             string DriverStoreFileName,
  56.             uint Flags,
  57.             string FilterDeviceIds);

  58.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreDeleteW", SetLastError = true, CharSet = CharSet.Unicode)]
  59.         internal static extern int DriverStoreDeleteW(
  60.             IntPtr hDriverStore,
  61.             string DriverStoreFileName,
  62.             uint Flags);

  63.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreImportW", SetLastError = true, CharSet = CharSet.Unicode)]
  64.         internal static extern int DriverStoreImportW(
  65.             IntPtr hDriverStore,
  66.             string DriverPackageFileName,
  67.             ProcessorArchitecture ProcessorArchitecture,
  68.             string LocaleName,
  69.             uint Flags,
  70.             StringBuilder DestInfPath,
  71.             ref int cchDestInfPath);

  72.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreReflectCriticalW", SetLastError = true, CharSet = CharSet.Unicode)]
  73.         internal static extern int DriverStoreReflectCriticalW(
  74.             IntPtr hDriverStore,
  75.             string DriverStoreFileName,
  76.             uint Flags,
  77.             string FilterDeviceIds);

  78.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreOfflineAddDriverPackageW", SetLastError = true, CharSet = CharSet.Unicode)]
  79.         internal static extern int DriverStoreOfflineAddDriverPackageW(
  80.             string DriverPackageInfPath,
  81.             uint Flags,
  82.             IntPtr Reserved,
  83.             ProcessorArchitecture ProcessorArchitecture,
  84.             string LocaleName,
  85.             StringBuilder DestInfPath,
  86.             ref int cchDestInfPath,
  87.             string TargetSystemRoot,
  88.             string TargetSystemDrive);

  89.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreOfflineDeleteDriverPackageW", SetLastError = true, CharSet = CharSet.Unicode)]
  90.         internal static extern int DriverStoreOfflineDeleteDriverPackageW(
  91.             string DriverPackageInfPath,
  92.             uint Flags,
  93.             IntPtr Reserved,
  94.             string TargetSystemRoot,
  95.             string TargetSystemDrive);

  96.         [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Size = 0x2B8, Pack = 0x4)]
  97.         public struct DriverStoreOfflineEnumDriverPackageInfoW
  98.         {
  99.             public int InboxInf;

  100.             public ProcessorArchitecture ProcessorArchitecture;

  101.             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 85)]
  102.             public string LocaleName;

  103.             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
  104.             public string PublishedInfName;
  105.         };

  106.         public delegate int CallbackRoutine(
  107.             [MarshalAs(UnmanagedType.LPWStr)]
  108.             string DriverPackageInfPath,
  109.             IntPtr DriverStoreOfflineEnumDriverPackageInfoW,
  110.             IntPtr Unknown);

  111.         [DllImport("drvstore.dll", EntryPoint = "DriverStoreOfflineEnumDriverPackageW", SetLastError = true, CharSet = CharSet.Unicode)]
  112.         internal static extern int DriverStoreOfflineEnumDriverPackageW(CallbackRoutine CallbackRoutine, IntPtr lParam, string TargetSystemRoot);
  113.     }
  114. }
复制代码


点评

这没有执行代码。 都是些说明文档。  详情 回复 发表于 2022-5-15 18:37
回复

使用道具 举报

17032#
 楼主| 发表于 2022-5-15 18:37:33 | 只看该作者
826773297 发表于 2022-5-15 18:28
M大,看看能不能帮忙转成pecmd

这没有执行代码。
都是些说明文档(头文件)。

点评

请教M大,批处理的变量,像这种: %comspec:~-13,1% 能拿到PECMD里直接引用吗?  详情 回复 发表于 2022-5-15 21:10
https://github.com/lostindark/DriverStoreExplorer/blob/63001487ad7150f06b6d3494d9e157b9c3e40cec/Rapr/Utils/NativeDriverStore.cs#L600 不知道这个能不能用  详情 回复 发表于 2022-5-15 18:46
原来是这样,明白了  详情 回复 发表于 2022-5-15 18:41
回复

使用道具 举报

17033#
发表于 2022-5-15 18:41:39 | 只看该作者
mdyblog 发表于 2022-5-15 18:37
这没有执行代码。
都是些说明文档(头文件)。

原来是这样,明白了
回复

使用道具 举报

17034#
发表于 2022-5-15 18:46:38 | 只看该作者
mdyblog 发表于 2022-5-15 18:37
这没有执行代码。
都是些说明文档(头文件)。

https://github.com/lostindark/Dr ... DriverStore.cs#L600
不知道这个能不能用

点评

还是 文档(头文件)  详情 回复 发表于 2022-5-15 18:58
回复

使用道具 举报

17035#
 楼主| 发表于 2022-5-15 18:58:50 | 只看该作者
826773297 发表于 2022-5-15 18:46
https://github.com/lostindark/DriverStoreExplorer/blob/63001487ad7150f06b6d3494d9e157b9c3e40cec/Ra ...

还是 文档(头文件)

点评

哦,那算了,难怪红毛没搞定,感谢M大  详情 回复 发表于 2022-5-15 19:18
回复

使用道具 举报

17036#
发表于 2022-5-15 19:18:41 | 只看该作者
mdyblog 发表于 2022-5-15 18:58
还是 文档(头文件)

哦,那算了,难怪红毛没搞定,感谢M大
回复

使用道具 举报

17037#
发表于 2022-5-15 21:10:32 | 只看该作者
mdyblog 发表于 2022-5-15 18:37
这没有执行代码。
都是些说明文档(头文件)。

请教M大,批处理的变量,像这种: %comspec:~-13,1%
能拿到PECMD里直接引用吗?

点评

试试: PECMD2012.1.88.05.87Stable-220512H测试.7z ENVI &V=123456789ABCDEF ENVI V=123456789ABCDEF MESS. [%&V:~-5,-2%] [%V:~-5,-2%]  详情 回复 发表于 2022-5-16 15:29
MSTR v=-13,1,%comspec%  详情 回复 发表于 2022-5-16 09:16
批处理里面的这个用法确实方便  详情 回复 发表于 2022-5-15 23:50
回复

使用道具 举报

17038#
发表于 2022-5-15 23:50:33 | 只看该作者
527104427 发表于 2022-5-15 21:10
请教M大,批处理的变量,像这种: %comspec:~-13,1%
能拿到PECMD里直接引用吗?

批处理里面的这个用法确实方便
回复

使用道具 举报

17039#
 楼主| 发表于 2022-5-16 09:16:02 | 只看该作者
527104427 发表于 2022-5-15 21:10
请教M大,批处理的变量,像这种: %comspec:~-13,1%
能拿到PECMD里直接引用吗?

MSTR v=-13,1,%comspec%
回复

使用道具 举报

17040#
发表于 2022-5-16 11:49:49 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-28 15:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表