3

Access 2000 データベースを Access 2010 ランタイムで実行し、信頼されていないファイルに関する警告ダイアログを削除しようとしています。私はいくつかの調査を行い、SelfCert.exe プログラムを発見しました。 これは、証明書に関する優れたチュートリアルです。 そしてこれも。 Microsoft でさえ、Access 2000 に対して、このメニュー項目が存在する必要があることを示す指示を出していました。しかし、Access 2000 VBA IDE の [ツール] メニューには [デジタル署名] メニュー項目がありません。さらに悪いことに、メニュー バーを右クリックして [ツール] メニューをカスタマイズするDigital Signature...と、カスタマイズ リストに項目が表示されます。クリック アンド ドラッグして [ツール] メニューに追加すると、コマンドが無視されます。なんて頑固!他のものをクリックして [ツール] メニューにドラッグすると、おまじないのように機能します。何?!

そのメニュー項目をインストールするにはどうすればよいですか? または、Access 2010 ランタイムからデータベースを開いたときに、データベースにセキュリティ警告が表示されないようにするにはどうすればよいでしょうか?

[ツール] メニューに [デジタル署名...] 項目を追加できません

4

3 に答える 3

4

さらに重要な調査を行った後、2 番目の質問に対する答えを発見しました。Access 2010 ランタイムで Access 2000 データベースを開くときに、潜在的なセキュリティ上の問題のダイアログが表示されないようにするにはどうすればよいですか?

Microsoft Access のセキュリティ通知

基本的に、信頼できる場所のリストにデータベースを追加する必要があります。Access 2010 ランタイムはこの機能の UI を提供しないため、プログラムで実行する必要があります。この Web サイトはコードを提供しています: Utter Access Add Trusted Location

この状況での特定の要件に合わせて変更しました。Access 2010 ランタイムで Access 2000 データベースを実行します。レジストリ設定に応じて、ランタイムの他のバージョン用に変更する必要があります。また、これは Windows 8 では機能しないと読みました。しかし、このコードを実行するのに管理者権限は必要ないこともわかりました。これは、現在のユーザーがフル アクセスできるレジストリの HKEY_CURRENT_USER ハイブのみを変更するためです。

Public Function AddTrustedLocation()
On Error GoTo err_proc
'WARNING:  THIS CODE MODIFIES THE REGISTRY
'You do not need administrator privileges
'since it only affects the HK_CURRENT_USER hive
'sets registry key for 'trusted location'

Dim intLocns As Integer
Dim i As Integer
Dim intNotUsed As Integer
Dim strLnKey As String
Dim reg As Object
Dim strPath As String
Dim strTitle As String

strTitle = "Add Trusted Location"
Set reg = CreateObject("wscript.shell")
strPath = CurrentProject.path

'Specify the registry trusted locations path for the Access 2010 runtime
strLnKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\Trusted Locations\Location"

On Error GoTo err_proc0
'find top of range of trusted locations references in registry
For i = 999 To 0 Step -1
    reg.RegRead strLnKey & i & "\Path"
    GoTo chckRegPths        'Reg.RegRead successful, location exists > check for path in all locations 0 - i.
checknext:
Next
MsgBox "Unexpected Error - No Registry Locations found", vbExclamation
    GoTo exit_proc

chckRegPths:
    'Check if Currentdb path already a trusted location
    'reg.RegRead fails before intlocns = i then the registry location is unused and
    'will be used for new trusted location if path not already in registy

    On Error GoTo err_proc1:
    For intLocns = 1 To i
        reg.RegRead strLnKey & intLocns & "\Path"
        'If Path already in registry -> exit
        If InStr(1, reg.RegRead(strLnKey & intLocns & "\Path"), strPath) = 1 Then GoTo exit_proc
NextLocn:
    Next

    If intLocns = 999 Then
        MsgBox "Location count exceeded - unable to write trusted location to registry", vbInformation, strTitle
        GoTo exit_proc
    End If
    'if no unused location found then set new location for path
    If intNotUsed = 0 Then intNotUsed = i + 1

    'Write Trusted Location regstry key to unused location in registry
    On Error GoTo err_proc:
    strLnKey = strLnKey & intNotUsed & "\"
    reg.RegWrite strLnKey & "AllowSubfolders", 1, "REG_DWORD"
    reg.RegWrite strLnKey & "Date", Now(), "REG_SZ"
    reg.RegWrite strLnKey & "Description", Application.CurrentProject.Name, "REG_SZ"
    reg.RegWrite strLnKey & "Path", strPath & "\", "REG_SZ"

exit_proc:
      Set reg = Nothing
      Exit Function

err_proc0:
      Resume checknext

err_proc1:
      If intNotUsed = 0 Then intNotUsed = intLocns
      Resume NextLocn

err_proc:
      MsgBox Err.Description, , strTitle
      Resume exit_proc

End Function

この関数を AutoExec マクロに追加しました。ユーザーが最初にログオンしたときに、セキュリティ通知を受け取ります。ただし、ドキュメントが最初に実行された信頼できる場所に残っている限り、再び表示されることはありません。ウーフー!

于 2013-08-27T21:53:53.993 に答える
1

Access 2000 はこれをサポートしていません。この機能は Access 2003 でのみ追加されました。

于 2013-07-30T10:10:29.813 に答える