首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.NET 4中使用ICLRStrongName?

如何在.NET 4中使用ICLRStrongName?
EN

Stack Overflow用户
提问于 2010-10-21 07:11:49
回答 1查看 563关注 0票数 1

我发现在非托管代码中使用以前的StrongName.h来获取程序集签名密钥现在已被弃用,我需要使用.NET和ICLRStrongName::StrongName.h::StrongNameTokenFromAssembly。

上一个StrongNameTokenFromAssembly(..)非常简单,现在这个新版本没有关于如何使用的文档。有没有人有使用这个界面的经验?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-22 01:08:19

哇..。这需要大量的修改。我们开始吧!

代码语言:javascript
复制
ICLRMetaHost *pMetaHost = NULL;
HRESULT hr = CLRCreateInstance(CLSID_CLRMetaHost,
               IID_ICLRMetaHost, (LPVOID*)&pMetaHost);  
if(hr == S_OK)
{
  WCHAR version[100];
  DWORD size;

  hr == pMetaHost->GetVersionFromFile(MyGetApplicationExecutablePath().c_str(), (LPWSTR) &version, &size);
  if(hr == S_OK)
  {
     LPWSTR assemblyVer = version;
     ICLRRuntimeInfo *pRuntimInfo = NULL;

     hr = pMetaHost->GetRuntime(assemblyVer, IID_ICLRRuntimeInfo, (LPVOID*)&pRuntimInfo);
     if (hr == S_OK)
     {
        ICLRStrongName *pStrongName = NULL;
        hr = pRuntimInfo->GetInterface(CLSID_CLRStrongName, IID_ICLRStrongName, (LPVOID*)&pStrongName);

        if(hr == S_OK)
        {
           pStrongName->StrongNameTokenFromAssembly(MyGetApplicationExecutablePath().c_str(), &token, &len);
           DWORD verified = 0;
           BOOLEAN sigVerified = pStrongName->StrongNameSignatureVerification(MyGetApplicationExecutablePath().c_str(), SN_INFLAG_FORCE_VER  , &verified);
           if (!verified)
           {
              //Do something nasty here if the Signature verification failed
           }
           pStrongName->StrongNameFreeBuffer(token);
        }
     }
  }

}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3983020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档