无忧启动论坛

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

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

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

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

点评

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

使用道具 举报

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

来个例子
回复

使用道具 举报

17043#
 楼主| 发表于 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
回复

使用道具 举报

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

好的,感谢m大
回复

使用道具 举报

17045#
发表于 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
回复

使用道具 举报

17046#
 楼主| 发表于 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
回复

使用道具 举报

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

原来是这样,明白了
回复

使用道具 举报

17048#
发表于 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
回复

使用道具 举报

17049#
 楼主| 发表于 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
回复

使用道具 举报

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

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

使用道具 举报

17051#
发表于 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
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

17055#
 楼主| 发表于 2022-5-16 15:29:34 | 只看该作者
527104427 发表于 2022-5-15 21:10
请教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 22:57
发现问题,开启 EnviMode 和 ForceLocal 之后就不行了,为空: envi^ EnviMode=1 envi^ ForceLocal=1 mess. [%^os:~6,1%]  详情 回复 发表于 2022-5-16 17:35
试了一下,完美!  详情 回复 发表于 2022-5-16 17:07
回复

使用道具 举报

17056#
发表于 2022-5-16 15:45:07 | 只看该作者
谢谢分享
回复

使用道具 举报

17057#
发表于 2022-5-16 17:07:12 | 只看该作者
mdyblog 发表于 2022-5-16 15:29
试试:  PECMD2012.1.88.05.87Stable-220512H测试.7z
ENVI &V=123456789ABCDEF
ENVI  V=123456789ABCDE ...

试了一下,完美!
回复

使用道具 举报

17058#
发表于 2022-5-16 17:35:51 | 只看该作者
mdyblog 发表于 2022-5-16 15:29
试试:  PECMD2012.1.88.05.87Stable-220512H测试.7z
ENVI &V=123456789ABCDEF
ENVI  V=123456789ABCDE ...

发现问题,开启 EnviMode 和 ForceLocal 之后就不行了,为空:

envi^ EnviMode=1
envi^ ForceLocal=1
mess. [%^os:~6,1%]

点评

试试: https://wwi.lanzoup.com/iJRRa04y8wti  详情 回复 发表于 2022-5-16 21:21
没有 &os这个变量 试试 SystemRoot  详情 回复 发表于 2022-5-16 20:54
回复

使用道具 举报

17059#
 楼主| 发表于 2022-5-16 21:21:15 | 只看该作者
527104427 发表于 2022-5-16 17:35
发现问题,开启 EnviMode 和 ForceLocal 之后就不行了,为空:

envi^ EnviMode=1

试试: https://wwi.lanzoup.com/iJRRa04y8wti

点评

好了  详情 回复 发表于 2022-5-16 22:35
回复

使用道具 举报

17060#
发表于 2022-5-16 22:35:59 | 只看该作者
mdyblog 发表于 2022-5-16 21:21
试试: https://wwi.lanzoup.com/iJRRa04y8wti

好了
回复

使用道具 举报

17061#
 楼主| 发表于 2022-5-17 18:27:59 | 只看该作者
哪儿可下载到powershell的源码?

点评

这个是吗 https://github.com/PowerShell/PowerShell  详情 回复 发表于 2022-5-17 18:38
回复

使用道具 举报

17062#
发表于 2022-5-17 18:38:42 | 只看该作者
mdyblog 发表于 2022-5-17 18:27
哪儿可下载到powershell的源码?

这个是吗

https://github.com/PowerShell/PowerShell

点评

对。 谢谢!!  详情 回复 发表于 2022-5-17 18:41
回复

使用道具 举报

17063#
 楼主| 发表于 2022-5-17 18:41:22 | 只看该作者
泮安宁 发表于 2022-5-17 18:38
这个是吗

https://github.com/PowerShell/PowerShell

对。 谢谢!!

点评

32位PECMD在64位系统中使用,有些变量会被重定向,比如%ProgramFiles%,用 envi^ DisX64=1,OldCfg 也不能禁止,这个问题有解吗? envi^ DisX64=1,OldCfg //禁止X64重定向 mess. [%^ProgramFiles%] //[C:\  详情 回复 发表于 2022-5-19 11:18
sed 反向查找貌似有问题: envi^ EnviMode=1 envi^ ForceLocal=1 set$ nl=0d 0a set a=%nl%t%nl%t%nl%t%nl%t%nl%t%nl%t%nl%t%nl% sed -ex ;;~d=?,t,,a mess. [%d%] //[0] 按理说应该是8  详情 回复 发表于 2022-5-17 22:32
回复

使用道具 举报

17064#
发表于 2022-5-17 19:06:50 | 只看该作者
再顶
回复

使用道具 举报

17065#
发表于 2022-5-17 22:32:10 | 只看该作者

sed 反向查找貌似有问题:

envi^ EnviMode=1
envi^ ForceLocal=1
set$ nl=0d 0a
set a=%nl%t%nl%t%nl%t%nl%t%nl%t%nl%t%nl%t%nl%
sed -ex ;;~d=?,t,,a
mess. [%d%]     //[0] 按理说应该是8


点评

LPOS好像也有同样问题。  详情 回复 发表于 2022-5-17 23:32
回复

使用道具 举报

17066#
发表于 2022-5-17 23:32:25 | 只看该作者
527104427 发表于 2022-5-17 22:32
sed 反向查找貌似有问题:

envi^ EnviMode=1

LPOS好像也有同样问题。
回复

使用道具 举报

17067#
发表于 2022-5-18 20:08:12 | 只看该作者
请教M大这种选择文件的窗口怎么实现呢



上面窗口选择路径,下面可以填写文件名,最终返回的是路径加文件名
回复

使用道具 举报

17068#
发表于 2022-5-18 21:32:17 | 只看该作者
泮安宁 发表于 2022-5-18 20:08
请教M大这种选择文件的窗口怎么实现呢

18621#_BrowDirX_Click_A4-03.wcs.zip (3.09 KB, 下载次数: 8)


点评

好的,谢谢  详情 回复 发表于 2022-5-18 22:06
回复

使用道具 举报

17069#
发表于 2022-5-18 22:06:17 | 只看该作者
回复

使用道具 举报

17070#
发表于 2022-5-18 22:43:28 | 只看该作者
本帖最后由 泮安宁 于 2022-5-18 23:01 编辑

怎么调用内置的exe呢
EXEC --exe:*#100 =!1.exe
但是这个1.exe还需要一个1.dll,把1.dll也内置到pecmd内
这样调用1.exe时好像没反应
就例如是wimlib那种除了exe还需要一个dll的,不知道内置后怎么调用

点评

打包cab,再内置。 用的时候用devi释放  详情 回复 发表于 2022-5-18 23:26
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 19:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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