递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 208|回复: 0
打印 上一主题 下一主题

[视窗] 文件_是否数字签名

[复制链接]

106

主题

1092

帖子

5881

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5881
跳转到指定楼层
楼主
发表于 2025-9-27 00:12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<火山程序 类型 = "通常" 版本 = 1 />

方法 文件_是否数字签名 <公开 静态 类型 = 逻辑型 @禁止流程检查 = 真 @视窗.外部头文件 = "<windows.h>" @视窗.外部头文件 = "<softpub.h>"
        @视窗.外部头文件 = "<wincrypt.h>" @视窗.外部头文件 = "<wintrust.h>" @视窗.外部头文件 = "<iostream>"
        @视窗.外部库 = "Crypt32.lib" @视窗.外部库 = "WinTrust.lib" "">
参数 文件路径 <类型 = 文本型 注释 = "dll || exe" 注释 = "如果为空,则检查自身~" @默认值 = "">
参数 是否验证证书链 <类型 = 逻辑型 @默认值 = 假>
参数 是否检查吊销 <类型 = 逻辑型 @默认值 = 假>
{
    常量 WTD_ALLOW_PEOPLE_CERT <类型 = 长整数 值 = 0x00000040>
    变量 文件 <类型 = 文本型>
    文件 = 选择 (文本是否为空 (文件路径), 取运行目录 () + 取执行文件名 (), 文件路径)
    @     GUID policyGUID = WINTRUST_ACTION_GENERIC_VERIFY_V2;
    @
    @     WINTRUST_FILE_INFO fileInfo = { sizeof(fileInfo) };
    @     fileInfo.pcwszFilePath = @<文件>;
    @
    @     WINTRUST_DATA trustData = { sizeof(trustData) };
    @     trustData.dwUIChoice          = WTD_UI_NONE;
    @     trustData.dwUnionChoice       = WTD_CHOICE_FILE;
    @     trustData.pFile               = &fileInfo;
    @     trustData.dwStateAction       = WTD_STATEACTION_VERIFY;
    @
    @     // 关键:根据参数决定吊销检查强度
    @     if (@<是否检查吊销>)
    @         trustData.fdwRevocationChecks = WTD_REVOKE_WHOLECHAIN;  // 链+吊销
    @     else
    @         trustData.fdwRevocationChecks = WTD_REVOKE_NONE;        // 不查吊销
    @
    @     // 如果需要"只看有没有签名",可以把下面整句注释掉;若想强制完整链验证,则保持默认即可.
    @     if (!@<是否验证证书链>)
    @     {
    @         // 允许自签/不受信任根也能返回 SUCCESS,只要哈希对
    @         trustData.dwProvFlags |= @<WTD_ALLOW_PEOPLE_CERT>;
    @     }
    @
    @     LONG status = WinVerifyTrust(static_cast<HWND>(INVALID_HANDLE_VALUE),&policyGUID,&trustData);
    @
    @     // 清理
    @     trustData.dwStateAction = WTD_STATEACTION_CLOSE;
    @     WinVerifyTrust(static_cast<HWND>(INVALID_HANDLE_VALUE), &policyGUID, &trustData);
    @
    @     return status == ERROR_SUCCESS;
}


回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-10-14 23:14 , Processed in 0.079881 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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