2009-10-21 25 views
8

私は、COMオートメーションを介してMS-Word 2007ドキュメントを読み込むシンプルなC#Winformsアプリケーションを開発しました。C#を使用してMS-Wordのセキュリティセンター設定をプログラムで構成する

これはすべて非常に単純で簡単ですが、ドキュメントに応じてマクロを有効にするかどうか、ActiveXコントロールを有効にするかどうかを選択する必要があります。

おそらくこれをレジストリに保存する方法がありますが、複数の同時リクエストが同時に実行される可能性があるため、これらの設定をインスタンスごとに制御したいと考えています。

私の質問は 'です。どのようにCOMオートメーションを使用してトラストセンターの設定を構成しますか?'

私は時間のためにGoogleで検索しましたが、すべては私がApplication.AutomationSecurityプロパティで見つけることができたが、これは以下の値のみ受け付けます。

  • MsoAutomationSecurity.msoAutomationSecurityLowを
  • MsoAutomationSecurity.msoAutomationSecurityForceDisable
  • MsoAutomationSecurity.msoAutomationSecurityByUI

ただし、Word 2007の信頼センターでは、以下の設定:

マクロの設定:

  • 無効にすべてのマクロの通知(msoAutomationSecurityForceDisableと一致する)ことなく、
  • 通知を無効にしてすべてのマクロ(私はこの1つを必要としない)デジタル除く
  • 無効にすべてのマクロ署名されたマクロ(対応なし)
  • すべてのマクロを有効にする(msoAutomationSecurityLowに一致)

alt text http://www.visguy.com/wp-content/uploads/2007/05/v2007-security-settings.png


ActiveXコントロール(個別に設定、私はスクリーンショットに応じてこれらの設定は、すべてのアプリケーション間で共有されることに注意し、これらを制御するための任意の方法を発見していない)

  • 無効すべてのコントロール無し通知
  • UFIコントロールを有効にする前に私に尋ねる....
  • すべてのコントロールを最小限に抑える前にプロンプ​​トを表示
  • 制限

alt text

せずにすべてのコントロールを有効にし、私はこれらの設定を変更しながら、MS-Wordのマクロを記録する古いトリックを試してみましたが、これらのステップのいずれも記録されません。

更新: レジストリのActiveXコントロールの設定には、次のエントリがあります。ActiveXの設定は実際にはグローバルで、誰かが間違っていることを証明しない限り、単一のMS-Wordインスタンスに対して指定することはできません。

のActiveX無効

ます。[HKEY_CURRENT_USER \ Software \ Microsoft \ Officeの\共通\セキュリティ] "DisableAllActiveX" = DWORD値:00000001 "UFIControls" = DWORD値:セーフモード

で有効00000002

のActiveX

ます。[HKEY_CURRENT_USER \ Software \ Microsoft \ Officeの\共通\セキュリティ] "DisableAllActiveX" = DWORD値:00000000 "UFIControls" = DWORD値:00000002

セーフモードせずに有効ActiveXの[ます。HKEY_CURRENT_USER \ Software \ Microsoft \ Officeの\共通\セキュリティ] "DisableAllActiveX" = DWORD値:00000000 "UFIControls" = DWORD:マクロを解決00000001

はまだ熱心設定の問題

答えて

7

私は自分の質問に答えるつもりです。次のように

私はそれをテストしているとのマッピングを確認することができますは、次のとおりです。

マクロの設定:

  • msoAutomationSecurityForceDisable =無効すべてのマクロ 通知

  • msoAutomationSecurityByUI =すべて無効にせずにデジタル以外のマクロ 署名付きマクロ

  • msoAutomationSecurityLowは=グローバルActiveXの設定のみが直接レジストリ

    のActiveX無効

    を編集することで設定することができ、私の知る限りでは、すべてのマクロ

を有効にし、[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword:00000001 "UFIControls" = dword:00000002

のActiveX

ます。[HKEY_CURRENT_USER \ Software \ Microsoft \ Officeの\共通\セキュリティ] "DisableAllActiveX" = DWORDセーフモードで有効:00000000 "UFIControlsは" = DWORD:セーフモードせずに有効00000002

のActiveX

ます。[HKEY_CURRENT_USER \ Software \ Microsoft \ Officeの\共通\セキュリティ] "DisableAllActiveX" = DWORD値:00000000 "UFIControlsは" = DWORD値:00000001

私はにコメントを残しています

2

私はこのスレッドがかなり古いですけど、迅速な研究の後、私はセキュリティセンターの設定ため、このレジストリを見つけたので、今日はそれを把握する必要がありました:

これは、Wordのバージョン2010に適用されます(とおそらく2007年が、12.0ではなく14.0と)

enter image description here

またはテキストで:

レジストリlocatイオン:

HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 140 \ Wordの\セキュリティ

マクロの設定:

:VBAWarnings

データ

無効に通知せずにすべてのマクロ -

すべて無効通知付きマクロ -

無効にデジタル署名されたマクロを除き、すべてのマクロ -

すべてのマクロ(...)を有効にする -

デベロッパーマクロの設定:

名前を:AccessVBOM

データ

チェックなし - チェック

-

0

ActiveXコントロールの設定については2010年のオフィスで

DisbaleActiveXにセーフモードのないあなただけの必要... 。

"HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security" /v UFIControls /t REG_DWORD /D 1 /F 
0

私は同じことを試してみたところ、レジストリやExcelの信頼設定を邪魔することなく、マクロを含む.xlsファイルを開く簡単な方法を発見しました。 C#で:

Application aXL = new Application(); 
aXL.FileValidation = 
    Microsoft.Office.Core.MsoFileValidationMode.msoFileValidationSkip; 
try { 
    Workbook aBook = aXL.Workbooks.Open("K:\\Work\\ExcelTest\\BrokenMacro.xls" 
        , 0 
        , true 
        , Type.Missing 
        , Type.Missing 
        , Type.Missing 
        , true 
        , Type.Missing 
        , Type.Missing 
        , false 
        , false 
        , Type.Missing 
        , false 
        , false 
        , Type.Missing 
        /*,false*/); 
      } 
      catch (Exception e) { 
       Console.WriteLine(e); 
      } 

詳細については、MSDNを参照してください。

My Excelトラストセンターの設定がすべてデフォルト値に設定されていました - 「警告付きのすべてのマクロを無効にする」と「VBAオブジェクトモデルへのアクセスを信頼しないでください」msoFileValidationSkipオプションを使用しないと例外がスローされました。ファイルには、罰金開いた。

をそれはマクロでファイルを開くためのプログラムを許可しますが、Excelアプリケーションウイルスだらけのスプレッドシートを開くしませんので、これは、移動するための方法であると私には思える。

に留意されたいです。私はOffice 2010を実行しています。このオプションが導入されたOfficeのバージョンについてはわかりません。

関連する問題