我正在努力从 Excel 2016 签署带有时间戳的 XLA 。这很重要,因为如果没有时间戳,当使用的代码签名证书过期时,签名就会失效。不幸的是,默认情况下 Excel 不会对签名应用时间戳。
微软的文档(https://docs.microsoft.com/en-us/deployoffice/security/use-digital-signatures-with-office)指出:
要将时间戳功能与数字签名一起使用,您必须完成以下任务:
设置符合 RFC 3161 的时间戳服务器
使用组策略设置“指定服务器名称”来输入时间戳服务器在网络上的位置。
我的证书颁发者 Comodo 声明他们的时间戳服务器 ( http://timestamp.comodoca.com) 支持 RFC 3161 ( https://support.comodo.com/index.php?/Knowledgebase/Article/View/68/0/time-stamping-server )。
我从https://go.microsoft.com/fwlink/p/?LinkID=626001下载并安装了 Office 2016 管理模板文件 (ADMX/ADML)以应用组策略设置。在本地组策略编辑器中,我可以访问 用户配置、管理模板、Microsoft Office 2016、安全设置、数字签名,其中找到了相关的组策略设置。
我最初设置了以下内容:
http://timestamp.comodoca.com20...然后当这些不起作用(见下文)时,我还设置:
XAdES-TXAdES-T...因为 XAdES-T “向签名的 XML-DSig 和 XAdES-EPES 部分添加时间戳,这有助于防止证书过期” - 这听起来像我需要的。
我正在使用“工具”菜单中的“数字签名”登录 VBA 编辑器。
但是,当我检查签名时,我仍然看不到 timestamp。
我正在检查签名如下(我不知道更简单的方法):
在Developer功能区中,单击 …
我在客户端 HTML 中使用 Chart.js 和 date-fns 适配器 ( https://github.com/chartjs/chartjs-adapter-date-fns ) 以允许时间笛卡尔轴 ( https://www. Chartjs.org/docs/latest/axes/cartesian/time.html)。
我正在从 CDN 加载 Chartjs-adapter-date-fns - 即我的页面加载chartjs-adapter-date-fns.bundle.min.js。(我没有使用 import 和 webpack。)
是否仍然可以按照https://github.com/chartjs/chartjs-adapter-date-fns#locale-support-via-scale-options配置区域设置支持?如果是这样,请给我一个示例,说明如何访问区域设置类以传递给缩放选项中的adapters.date.locale。
文件指出:
// import date-fns locale:
import {de} from 'date-fns/locale';
// scale options:
{
adapters: {
date: {
locale: de
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但import在浏览器中不起作用 - 那么我如何获取像这样的语言环境de?
我有一个UDP服务器绑定到一个众所周知的端口,将自己添加到一个多播组并侦听客户端的请求.(服务器位于Windows上,并使用WSARecvFrom为客户端数据报发出重叠接收.)客户端以其众所周知的端口和多播IP地址向服务器发送消息.
在笔记本电脑上测试"服务器"时,我注意到如果笔记本电脑进入"睡眠"状态,服务器的接收套接字将从多播地址变为"未绑定"(以便不再接收客户端发送到多播地址) .但是,套接字仍在接收,仍然接收到127.0.0.1的端口发送 - 并且Windows不指示任何错误.(服务器套接字绑定到INADDR_ANY.)
"服务器"是用于自动发现的对等应用程序的一部分 - 因此这种情况并不像预期的那样不寻常.
您能否建议一种方法来确定服务器是否仍在主动侦听多播地址而不发送到多播地址(这会导致网络上所有"服务器"的不必要流量)?一种可能的解决方案是发送到用于多播的适配器的IP地址,但我不知道如何确定.
我们的安装程序使用CustomAction(在InstallExecuteSequence中调用)可选地从安装程序旁边的目录中复制用户配置文件.这使用[SourceDir]来定位源目录.
我们目前有32位和64位版本,它们作为单独的.MSI文件分发.我正在尝试使用Burn构建包含这些.MSI文件的单个.EXE.显然当Burn安装了MSI时,它的[SourceDir]位于其他地方(我看到了C:\ProgramData\Package Cache\...路径),所以这个自定义动作不起作用.
我找到了WixBundleOriginalSource变量,但我的问题是我希望MSI文件能够独立工作并与Burn一起打包.我认为我需要有条件地将变量设置为WixBundleOriginalSource(如果已定义(用户使用Burn .exe))或者如果未定义WixBundleOriginalSource(用户直接安装.MSI)则将SourceDir设置为SourceDir,然后将此变量传递给我的自定义操作.(我知道WixOriginalSource是安装程序的完整路径,而不是它所在的目录 - 我可以在我的自定义操作中处理它.)
这可能吗?如果是这样,请帮我解释一下语法.
更新:
我可能会在自定义操作中处理条件部分,并调用它两次:一次使用[SourceDir](直接使用MSI时有效),正如我现在所做的那样:
在我的产品中
<CustomAction Id='CopyConfigFiles'
FileKey="MyInstallationUtility"
ExeCommand="COPYFILES [SourceDir]"
Execute="deferred"
Impersonate="no"
Return="ignore" />
Run Code Online (Sandbox Code Playgroud)
......和一次WixBundleOriginalSource.但是,我找不到办法让WixBundleOriginalSource我自定义动作.使用:
ExeCommand="COPYFILES [WixBundleOriginalSource]"
Run Code Online (Sandbox Code Playgroud)
......不起作用.使用:
在我的Burn Bundle中
<WixVariable Id="ConfigFileLocation" Value="[WixBundleOriginalSource]" />
Run Code Online (Sandbox Code Playgroud)
在我的产品中
ExeCommand="COPYFILES [ConfigFileLocation]"
Run Code Online (Sandbox Code Playgroud)
......也行不通.两者都给我一个空字符串作为参数.