windows-installer – 来自产品ID的MSI产品代码?
发布时间:2020-12-14 01:51:26 所属栏目:Windows 来源:网络整理
导读:我正在尝试将MSI产品代码GUID转换为用于标识MSI注册表项中已安装项目的产品代码ID.这有API吗?如果没有,怎么办呢? 解决方法 警告! Microsoft强烈建议您不要弄乱他们的MSI注册表项,但如果您真的必须这样做,这里是将标准产品代码GUID转换为注册表中使用的密
我正在尝试将MSI产品代码GUID转换为用于标识MSI注册表项中已安装项目的产品代码ID.这有API吗?如果没有,怎么办呢?
解决方法
警告! Microsoft强烈建议您不要弄乱他们的MSI注册表项,但如果您真的必须这样做,这里是将标准产品代码GUID转换为注册表中使用的密钥格式的例程:
private static string TranslateMsiProductCode(Guid productCode) { // 93 CE EF F6 AA 3D 4E 99 84 E1 8F FB F7 2C 43 0D <--- Source // 6F FE EC 39 D3 AA 99 E4 48 1E F8 BF 7F C2 34 D0 <--- Target // ----------- ----- ----- ----------------------- // 01 23 45 67 89 01 23 45 67 89 01 23 45 67 89 01 // 0 1 2 3 // examples: // {93CEEFF6-AA3D-4E99-84E1-8FFBF72C430D} -> 6FFEEC39D3AA99E4481EF8BF7FC234D0 // {0E837AF0-4C92-4077-83F0-D022073F17C0} -> 0FA738E029C47704380F0D2270F3710C // {4AE61EA4-9F6F-4616-9035-0CF343EA462D} -> 4AE16EA4F6F961640953C03F34AE64D2 string input = productCode.ToString("N").ToUpper(); StringBuilder newString = new StringBuilder(input); newString[0] = input[7]; newString[1] = input[6]; newString[2] = input[5]; newString[3] = input[4]; newString[4] = input[3]; newString[5] = input[2]; newString[6] = input[1]; newString[7] = input[0]; newString[8] = input[11]; newString[9] = input[10]; newString[10] = input[9]; newString[11] = input[8]; newString[12] = input[15]; newString[13] = input[14]; newString[14] = input[13]; newString[15] = input[12]; newString[16] = input[17]; newString[17] = input[16]; newString[18] = input[19]; newString[19] = input[18]; newString[20] = input[21]; newString[21] = input[20]; newString[22] = input[23]; newString[23] = input[22]; newString[24] = input[25]; newString[25] = input[24]; newString[26] = input[27]; newString[27] = input[26]; newString[28] = input[29]; newString[29] = input[28]; newString[30] = input[31]; newString[31] = input[30]; return newString.ToString(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-7 – Windows 7 64位上的FoxPro 2.6 DOS
- Windows – XP,Vista,Win7之间的IE8行为差异?
- 批处理文件 – Windows批处理文件过早终止
- windows – 为什么PE需要Original First Thunk(OFT)?
- windows下搭建vue开发环境+IIS部署
- 如何在Windows上制作相同高度的SWT按钮,文本和标签?
- windows – 如何说服Visual Studio在TCP / IP上使用ADB for
- windows – 尝试从Vim编译和调试C语言
- 从Windows C#Canon SDK与PTP或MTP对齐图片
- Windows – Win32:如何将字符串转换为日期?