2011-12-20 10 views
4

このメッセージを最終的に再現できるようになりました。物事をしようとしている間セキュリティ上の警告メッセージ「このファイルには安全でない可能性のあるダイナミックコンテンツが含まれています」が表示される

これでV8.04には、Windows 7の

に、私はそれに操作すると、ノートブックを開いたとき、Mathematicaは、上記のメッセージを生成するようにする方法を発見しました。

まずエラーメッセージ画面:

enter image description here

私は今、 'ダイナミクスを有効にする' とすべてがうまくようですヒット。しかし、ノートを再び開くたびに、私は再びメッセージを受け取ります。 (Mを閉じてからもう一度起動し、ノートブックを開いてメッセージを確認する必要があります)。

私はこの警告メッセージとそれがなぜ起こるのか理解できず、コードを削除するためにコードを変更する必要があります。

それを生成するためのコードは次のとおりです。

Manipulate[ 

    DynamicModule[{p}, 
    p["x"] = 0; 
    Row[{Dynamic[ 
     Refresh[p["x"]++; Row[{"p[x]=", p["x"]}], 
     TrackedSymbols -> {n}]]}] 
    ], 

    Button["update counter", n++], 
    {{n,0}, None} 
    ] 

上記は、ノートブックの他には何もして、独自のノートブックです。

私はMを閉じてから起動し、ノートブックを開くと上記のメッセージが表示されます。

今、私は、私は、p [X]に[「X」]のpを変更する必要があるメッセージを削除するには、最初はその考え私は上記のノートブックを閉じ、そしてこのコードで新しいノートブック作っ:

Manipulate[ 

    DynamicModule[{p}, 
    p = 0; 
    Row[{Dynamic[Refresh[p++; Row[{"p=", p}], TrackedSymbols -> {n}]]}] 
    ], 

    Button["update counter", n++], 
    {{n, 0}, None} 
    ] 

その後、Mを閉じてもう一度起動し、上記のノートブックを開きました。 、今ではにはが表示されませんでした。しかし、私はプロセスを繰り返したとき、私は同じエラーが戻ってくるのを見た。

(私はこの質問をMathグループに投稿しましたが、それは遅く、私の投稿は表示されませんでしたが、その投稿ではp ["x"]をp [x]は最初に実際に行ったものですが、後で試してみるとメッセージが戻ってきましたが、わかりません)

p ["x"]はこのページで説明されているインデックス付きオブジェクトです:

http://reference.wolfram.com/mathematica/tutorial/MakingDefinitionsForIndexedObjects.html

質問です:どのような上記のコードであることは、この警告が表示することができますか?私は上記の例で何か間違って書いていますか?

ダイナミクスを有効にした後、コードは正常に実行されます。 Btw、私は同じノートブックから別のノートブックを開いています。何も変わっていません。これは家庭用PC、ネットワーク共有フォルダ、普通のものではありません。

は、ここで私は私がやっているものに関連した上記のものに表示されていないノートセキュリティ

http://reference.wolfram.com/mathematica/tutorial/NotebookSecurity.html

に関連したリンクです。私が言うことができるすべてのことは、それ自体がDynamicModuleであるManipulate内部のDynamicModule []の使用と関係しています。しかし、私はこれがなぜ問題であるのかを十分に理解できません。

アップデート1

私は、これはパスとは何かを持っているか表示されません。

Manipulate[ 


(* 
    DynamicModule[{p}, 
    p["x"]=0; 
    Row[{Dynamic[Refresh[p["x"]++;Row[{"p[x]=",p["x"]}],TrackedSymbols-> \ 
    {n}]]}] 
    ], 
*) 

n, 
Button["update counter", n++], 
{{n, 0}, None} 
] 

ノートブックを開いて、Mを起動し、近いM、ノートブックを保存します:私は単にこのように、内側ダイナミックをコメントアウトすることでエラーを取り除くことができます。エラーは消え去った。

これはコード内にあります。ヨーダは彼の答えで報告何再現しようとすると

アップデート2

は、私がすることはできませんよ。

  1. 新しいノートブックを作成し、タイプ[email protected][]
  2. は評価することENTER。
  3. SAVE
  4. 近いM
  5. オープンM
  6. オープンノート
  7. エラーなし

enter image description here

更新2001年12月21日番目に

電子数学グループ、ジョン・フルツは私の投稿に返信する親切だった、私は私がリンクを持っていないことを

> > So, why is using p["x"] causing the security warning message? 

That is a bug, which has already been fixed in development sources. 
John Fultz 
User Interface Group 
Wolfram Research, Inc. 

申し訳確認するために他人の利益のために、ここで彼の答えを投稿した場合、彼は気にしないと思います彼の返事に含めるには、今私はGoogle上のリンクを見つけることができませんでした。私はthunderbirdを使ってニュースグループを読む。

この質問はまだ開いていますか?それとも閉鎖すべきか?もし私がそれを閉じなければならないなら、答えの一つを受け入れて閉じられるようにすることができます。

+0

私はそれがコードのためだとは思わない。あなたの作業ディレクトリは "信頼できる"パスではないので、おそらくそうです...私は "信頼される"とは、デフォルトでは、mmaによって作成されたディレクトリのみを含むと考えています。 – abcd

+0

@yoda、私が上記のために使用するフォルダは私のホームフォルダです。私は他のすべてのノートブックに使用します。何も変わっていません。このエラーはあなたの目的のために得られますか? – Nasser

+1

確実に信頼できるパスの問題です。この問題が発生しないようにするための最良のソリューションは、David ReissがMathgroupに投稿したコードを実行することです。彼の名前と信頼できる道を探してください。あなたはそれを見つけなければなりません。 –

答えて

2

これは特定のコードサンプルのためではなく、むしろMathematicaのセキュリティ機能によるものです。 tutorial/NotebookSecurityから、

ユーザーは動的なコンテンツを含むノートブックを開くと、Mathematicaの は最初 信頼できない、またはどちらも、ノートブックのディレクトリが信頼されているかどうかを決定します。ノートブックのディレクトリが信頼されている場合

  • 、ノートブックは自動的に ユーザに警告することなく、動的評価を実行するために許可されます。
  • ノートブックのディレクトリが信頼できない場合は、ノートブックが動的評価を実行しようとすると、ユーザに警告が表示されます。デフォルトでは
    enter image description here

、唯一$InstallationDirectory$BaseDirectory、そして$UserBaseDirectoryは "信頼" です。さらに、のディレクトリがあり、常に(変更可能)となっています。これはあなたのダウンロードです
解決策は、現在の作業ディレクトリを信頼できるフォルダのリストに追加することです。

Preferences > Advanced > Open Options InspectorGlobal Preferencesにアクセスし、trustedを検索して、3つのオプションが表示されるはずです。ここに追加することができます。

enter image description here

+0

私はそれをして何かを壊す前に、私が理解できないことはなぜこれをやらなければならないのかということです。私は常にManipulateとDynamicsを使います。 ManipulateはDynamicModule []です。では、なぜ今は自分のフォルダパスを追加する必要がありますか?私はダイナミクスを使用していて、この時間も問題なく処理していますか?決してこれをしなければならなかった。ここでは、Manipulateやダイナミクスを使用するノートブックを持っている各フォルダを実際に追加していますか?ありがとう。 – Nasser

+0

@ NasserM.Abbasi私はManipulateとDynamicをあまり使用していません。通常は、SOの質問に答えたり、他人の答えを試したりするためだけです。したがって、これらはすべて最終的に殺される手帳の中にあるので、私はこの問題に直面する必要はありませんでした。私はこれが正当に使用された数回のうちに起こるのを見ましたが、なぜそれが起こり、単にそれを有効にして移動します。決して私を悩ますのに十分な回数それを見なければならなかった... – abcd

+0

これはすべて、この中の重要なフレーズは "有害な可能性を秘めた潜在的なコンテンツ"ですか?それで、上のコードでは、それが有害である可能性があることを示したのは何ですか?繰り返しますが、私は常にManipulateを使います。だから、問題のダイナミクスだけではなく、特定のタイプの使用です。だから問題は、上記のコードには何が有害なのでしょうか? – Nasser

3

これはヨーダの答えの継続に加えて、別のスタンドアローンの答えよりますが、あなたは出力に動的なコンテンツを持っている信頼できないディレクトリからノートブックを開いている場合に述べてきたようなコメントの詳細ですセルにセキュリティ警告が表示されます。次のコードを評価した場合:

CurrentValue[$FrontEnd, {"NotebookSecurityOptions", "TrustedPath"}] 

CurrentValue[$FrontEnd, {"NotebookSecurityOptions", "UntrustedPath"}] 

NotebookDirectory[] 

を、あなたのノートブックは(セキュリティ警告の外観やないにも関わらず)信頼できるか信頼できないパスであるか否かについてのあなた自身を満足させることができるようになります。

+0

+1、コマンドのおかげで、彼らは助けます。私はそれらを試して、私が使用しているフォルダは、信頼されたパスではありません。ですから、質問は残っています、なぜ私はYodaによって示された例を使ってエラーメッセージを得られないのですか? (DateStringの例)?私はそれが役立つ場合、コマンドの出力を表示しますが、私のNotebookDirectoy []は確かに信頼されたパスに表示されませんでした。 – Nasser

3

デフォルトのオプション設定(「TrustByDefault」 - >「自動」)を使用していると仮定すると、3つの動作のいずれかが表示されます。

  • ノートブックが「TrustedPath」で内容を記載されているディレクトリにある場合は、安全であるとみなされ、警告が表示されることはありません。

  • ノートブックが「UntrustedPath」に記載されているディレクトリにある場合、そのコンテンツは安全でないとみなされ、常に警告が表示されます。

  • ノートブックが「TrustedPath」と「UntrustedPath」のどちらにも記載されていないディレクトリにある場合、ノートブックに格納されているDynamicBox式の内容に応じて警告が表示される場合もあります。 Mathematicaは式を評価しようとする前にその式を調べる。 「安全な」表現の短いホワイトリストからの式だけが含まれている場合、警告は表示されません。 「安全な」表現のホワイトリストに含まれていない式が含まれている場合、警告が表示されます。

+0

Nasserの質問のうちの1つは、「安全な表現のホワイトリストは何ですか?」ということです。そのようなリストはありますか?ダイナミックな出力セルの_all_式に適用したと思いました。 「Dynamic @ 1」(評価され、出力セルとともに)のノートブックでさえ、私に警告を与えます。 – abcd

+0

+1の追加情報については、私のフォルダは信頼できるものでも信頼できないものでもありません。今私はYodaの例(DateStringの例)からエラーを取得する場合、私は今いくつかの試行をして、私は、信頼できないパスに明示的にフォルダを追加するかどうかを確認する必要があります。後で更新されます...この謎の底に近づいているかもしれません:) – Nasser

+0

CDFではセキュリティ警告がもっと変わっているようです。私はCDFのセキュリティ上の問題を抱えていました.Wolframが提供するソリューションは、DownValuesを削除することでした。つまり、私の関数を純粋な関数として書き直すことでした。 –

2

私も、私はそれが前に来ていなかったと思ったノートPCにまで来て、このメッセージに問題があったが、私はそれがあるため、動的ノートに既存の出力およびという事実である今確信していますダイナミック出力はフロントエンドで実行されます。だから、あなたがダイナミック出力が見えるノートブックを開くと、FEはそれを実行しようとします。ノートブックからすべてのダイナミック出力を削除して保存して、閉じてから(そして、Mathematicaを閉じて再オープンしても)、ノートブックを再度開きます。ダイナミック出力がないのでメッセージは表示されません。

私はyodaとして提案したとおり、オプションインスペクタを開き、グローバル環境設定でTrustedPathを編集しました。私はTrustedPathにパスを追加する方法を正確に把握するためにいくつかの演奏をしなければならなかったので、私はyodaの答えの続きとしてこの "回答"を投稿しています。

ドキュメントを次のように(Mac OS 10では)信頼できるパスとして追加しました。6)(信頼できないものは保存しないように注意してください):

  1. TrustedPathの[値]列の左側にある小さな編集ボタンをクリックします。
  2. 開いたウィンドウで[追加]をクリックします。
  3. あなたは

    FrontEnd`FileNameが表示されます[{$ RootDirectoryは}、 "X"]

  4. あなたのような信頼されたいパスとxを交換:

    FrontEnd`FileName [{$ RootDirectoryは}、「/ユーザ/ジョン/ドキュメント/」]

今、私はドキュメントまたはそのサブフォルダに保存されたノートブックのための迷惑な警告を取得することはありません。

関連する問題