MSI製品コードGUIDを、MSIレジストリキーにインストールされている項目を識別するために使用された製品コードIDに変換しようとしています。このためのAPIはありますか?そうでない場合、どうすればこのことができますか?製品IDのMSI製品コード?
5
A
答えて
5
警告! 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();
}
0
はここです私がPerlで作ったものを、より優雅なやり方で探しているときにこの質問を見つけました。
use strict;
use warnings;
my $guid;
if (shift() =~ /\{([0-9A-F\-]+)\}/)
{
$guid = $1;
}
die "Usage $0: <guid>\n" unless $guid;
my @sections = split /-/, $guid;
die "Malformed guid $guid\n" if @sections != 5;
my $str;
for (my $i = 0; $i < 3; ++$i)
{
$str .= reverse($sections[$i]);
}
my @tmp = split //, join('', @sections[3,4]);
for(my $i = 0; $i < @tmp; $i += 2)
{
$str .= join('', @tmp[$i+1, $i]);
}
print "$str\n";
関連する問題
- 1. Java 8 MSI製品コード
- 2. 製品ID
- 3. アンドロイドの製品ID:
- 4. 同じ製品ID
- 5. Opencart 3製品は、製品
- 6. MagentoカテゴリID製品ID
- 7. 製品コード.net framework
- 8. オープンカート - 製品オプションの製品IDを取得する - sql
- 9. 製品IDと製品タイプをMagentoで取得しますか?
- 10. 製品URLから製品IDを削除する
- 11. Laravelは、製品IDが
- 12. オーダー、製品、オーダー製品モデルの関連
- 13. Magento製品のカスタム製品オプションレポート
- 14. Magentoの - 製品IDからバンドルされた製品IDのリストを取得
- 15. Visual Studio 2005の製品コード?
- 16. ruby display delete製品=ユーザ製品
- 17. Magento製品リスト製品タイプ別
- 18. 製品
- 19. 製品
- 20. 製品のパーティション
- 21. Magentoは、製品詳細ページのカスタムモジュールブロックで製品IDを取得します
- 22. 製品IDをLaravel Collectionの製品名に置き換えます。
- 23. CodeIgniterで製品カテゴリIDが製品フォームで機能していません
- 24. 製品フィルタ
- 25. 製品イメージサムネイル
- 26. カスタムパイプ製品フィルター?
- 27. は/製品/ 5a22c1bdc2f7e634fc7c7c97
- 28. 製品バリアント - フロントエンド
- 29. クロス製品
- 30. WooCommerce製品サムネイル
ニース!文字の入れ替えと文字列の反転を簡略化する機会があるようですが、ありがとう! –
このルーチンはここで少し良く書かれました:http://stackoverflow.com/questions/17936064/how-can-i-find-the-upgrade-code-for-an-installed-application-in-c –