有时,当我打开自己的笔记本时,我会收到消息:
此文件包含可能不安全的动态内容。
我不记得我何时开始看到这些消息,但不久之前。可能是2-3周前?它们不会一直显示。这是我自己的笔记本,我可以关闭,睡觉,醒来,再打开它,我可以看到上面的消息,或者我不能。不知道是什么引发了它。
这是刚刚发生的一个屏幕截图。
我通常只是忽略它,并启用动态并继续。我用Google搜索,并没有看到它。我找到的一个参考文献是this,其中涉及TrustedPath
等等,而我根本无法理解它。
这款笔记本只是放在我个人电脑上的文件夹中,它一直在同一个文件夹中。可能是专家可以通过易于理解的方式解释这一点,因为我不明白为什么当我在自己的本地PC上工作时我需要担心trustedPath的事情(我甚至不在网络上,只是独立的PC在我的起居室)以及我需要改变的地方。
我在Windows上使用v8.0.1。
答案 0 :(得分:7)
Mathematica笔记本只需打开文件即可执行任意代码。此代码可能具有潜在恶意,在执行代码之前很难预测代码实际执行的操作。
当您打开笔记本时,Mathematica不知道您是否是笔记本的原作者(并且您信任该内容自动运行),或者您是否从一个完全陌生的网站下载了笔记本(并且您不应该不相信内容会自动运行。 Mathematica可以做出的最佳猜测是基于计算机上文件的位置。某些目录是可信的(即Mathematica安装目录),其他目录是不可信的(即您的Web浏览器下载文件夹和您的电子邮件附件文件夹)。您提到的文档页面中描述了控制哪些目录受信任以及哪些目录不受信任的设置。
在您的情况下,可能发生的事情是您的文档保存在您的桌面目录或其他不受信任的目录中,Mathematica在做出其认为可能有害的内容之前请求您的许可。由于您知道它无害,因此您可以安全地使用动态内容。
如果您不希望将来看到这些警告,您可以执行以下两项操作之一:
答案 1 :(得分:4)
我的评论假设是Mathematica的V8 ......
对于任何给定的笔记本,第一次即将自动评估表达式时,将显示该消息,除了正常的用户控制的输入单元格评估之外。所谓的动态结构如Manipulate
,Dynamic
和Hyperlink
都有可能导致此类评估。警告消息只是确保用户保持控制的一种方式。
有时候没有警告?
如下面的示例中所示,在动态代码即将被触发之前(例如,通过将Manipulate
置于视图中或通过悬停Hyperlink
),消息不会出现。这就是为什么在同一个笔记本中,您有时可能会看到该消息,有时则看不到。
操纵 示例
我从截图中看到,有问题的笔记本是Wolfram Demonstrations Project创作笔记本。它几乎肯定包含一个触发消息的Manipulate
表达式。
这是一种导致警告出现的方法:
Manipulate[Plot[Sin[x y], {x, -1, 1}], {y, -1, 1}]
- 但不评估单元格。Manipulate
单元格。第一次重新打开笔记本时,它不包含具有动态内容的单元格。但是当评估Manipulate
单元格时,情况发生了变化。因此,在随后的重新开放时,会出现警告信息。
超链接 示例
所有这一切都适用于看似无害的内容,例如超链接。试试这个:
Hyperlink["http://www.wolfram.com"]
。WRI似乎对动态内容采取了非常保守的观点。举个例子,我赞扬这一政策。 Mathematica为恶意代码提供了一个巨大的攻击面,因此我认为保守的方法很好。 (事实上,新的插件让我对这个分数感到有点害怕,但这是另一个故事。)
警告设置
您可以通过查看偏好设置对话框的系统标签上的 Notebook Security 部分来调整与警告消息相关的设置。