Ситуация: .net framework на компьютере не установлен, но на компьютере имеется некоторая сборка со strong name.
Как из программы на delphi получить strong name этой сборки.
Здравствуйте, yoko, Вы писали:
Y>Ситуация: .net framework на компьютере не установлен, но на компьютере имеется некоторая сборка со strong name. Y>Как из программы на delphi получить strong name этой сборки.
Может это поможет "C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\StrongName.h"
Тока для этого нужен .Net Framework SDK.
Спасибо, я посмотрю.
A>... A>Тока для этого нужен .Net Framework SDK.
А из самого файла сборки эту информацию можно вытащить? Без обращения к .NET API?
Дело в том, что framework может быть и не установлен на машине, а получить strong name все равно нужно.
Здравствуйте, yoko, Вы писали:
Y>Ситуация: .net framework на компьютере не установлен, но на компьютере имеется некоторая сборка со strong name. Y>Как из программы на delphi получить strong name этой сборки.
Здравствуйте, yoko, Вы писали:
Y>Спасибо, я посмотрю.
A>>... A>>Тока для этого нужен .Net Framework SDK.
Y>А из самого файла сборки эту информацию можно вытащить? Без обращения к .NET API? Y>Дело в том, что framework может быть и не установлен на машине, а получить strong name все равно нужно.
Открываешь
"c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Tool Developers Guide\docs\Partition II Metadata.doc"
и читаешь как тебе добраться до содержимого таблицы Assembly. Ничего сложного там нет. Извлекаешь из таблицы составные части StrongName( MajorVersion, MinorVersion, BuildNumber, RevisionNumber , PublicKey , Name , Culture) и используешь.
Здравствуйте, mihailik, Вы писали:
M>Нет, ну по-хорошему ещё и проверить его нужно криптографически. А то оно будет не очень то Strong Name. Скорее Weak Name.
StrongName является чем-то типа цифровой подписи сборки.
Если ты просто вытащишь значение StrongName, то не факт, что сборка действительно та, что написано в StrongName. Чтобы удостовериться, нужно расчитать хеш и проверить, что он совпадает.
Здравствуйте, mihailik, Вы писали:
M>StrongName является чем-то типа цифровой подписи сборки.
StrongName является, наверное, чем-то типа уникального идентификатора сборки, а частью цифровой подписи является PublicKey, или я ошибаюсь?
M>Если ты просто вытащишь значение StrongName, то не факт, что сборка действительно та, что написано в StrongName. Чтобы удостовериться, нужно расчитать хеш и проверить, что он совпадает.
Так этот же самый хеш и рассчитывается при формировании StrongName?
M>>StrongName является чем-то типа цифровой подписи сборки. Y>StrongName является, наверное, чем-то типа уникального идентификатора сборки, а частью цифровой подписи является PublicKey, или я ошибаюсь?
Да. Только PublicKey входит в StrongName.
Поэтому, чтобы окончательно удостоверить StrongName, нужно проверить цифровую подпись. Это именно тот момент, который привёл к прилагательному "strong" в названии StrongName.