Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


メインフォームにコンピュータネームを用いたセキュリティ機能をつける : Access裏技Tips



セキュリティ強化はパスワード入力が一般的ですが、余り知られていないコンピュータネームを用いる方法もあります。ここでは、利用者単位ではなくパソコン単位でセキュリティを強化する技を紹介します。

コンピュータネームを用いたセキュリティ機能

メインフォームを作成し、コマンドボタン(Cmdコマンド)を配置します。 コンピュータネームを取得するために、WindowsAPIを用いたFunctionプロシージャSelectPcNameを作成します。 このプロシージャ内に許可するコンピュータネームを事前に記載しておきます。 次に、フォームの開く時イベントを利用して、自動的に許可されたコンピュータネームとの照合を行い、 相違した場合は警告メッセージと共にAccessを終了します。

標準モジュールの宣言セクションに宣言

定数 ahtcMaxComputerNameLength 及びDeclare ステートメントを宣言します。

Const ahtcMaxComputerNameLength = 15
Private Declare Function GetComputerName Lib "Kernel32" Alias "GetComputerNameA" _
                     (ByVal lpBuffer As String, nSize As Long) As Integer ' --- A
解説
  1. C:\WINDOWS\system32のDLLを利用するために宣言します。

Functionプロシージャ SelectPcName の作成

Functionプロシージャ SelectPcName を作成します。

Function SelectPcName()

On Error GoTo エラー

    Dim strmsg As String
    strmsg = "利用権限がないので、開くことができません。"

    Select Case ahtGetComputerName() ' --- A
        Case Is <> "PC", "geet" ' --- B
            MsgBox strmsg, 16
            Application.Quit ' --- C
        Case Else
          Exit Function
    End Select
    
    Exit Function

エラー:

    MsgBox "何か予期せぬエラーが生じました。" & vbNewLine & Err.Description, 16
        
End Function
解説
  1. Functionプロシージャ ahtGetComputerName を呼び出します。
  2. 許可するコンピュータネームを記載します。2台以上のPC名を記す場合は、間を,(カンマ)で区切って下さい。サンプルでは、PC, geetの2つ設定しています。
  3. Accessを終了します。
今回のおすすめポイント

Select Caseステートメント

複数の条件句、式がある場合は、Ifステートメントではなく、Select Caseステートメントを用いた方が視認性があがります。 Select Caseステートメントの場合、複数指定するときは、カンマ (,) で区切るだけです。

Functionプロシージャ ahtGetComputerNameの作成

Functionプロシージャ ahtGetComputerName を作成します。

Function ahtGetComputerName() As String ' --- A

    Dim strBuffer As String
    Dim lngSize As Long
    Dim fOK As Integer
   
    lngSize = ahtcMaxComputerNameLength + 1
    strBuffer = Space(lngSize)
   
     fOK = GetComputerName(strBuffer, lngSize)
    ahtGetComputerName = Left$(strBuffer, lngSize)
    
End Function
解説
  1. WindowsAPIを用いてコンピュータネームを取得します。

メインフォームの作成

  1. 非連結のメインフォームを作成します。
  2. コマンドボタンを作成します。
  3. フォームのポップアッププロパティ、作業ウィンドウ固定プロパティをそれぞれ"はい"に設定します。

フォームの開く時イベントプロシージャの作成

フォームの開く時イベントプロシージャを作成します。

Private Sub Form_Open(Cancel As Integer)

    Call SelectPcName ' --- A

End Sub
解説
  1. FunctionプロシージャSelectPcNameを呼び出します。

コマンドボタンクリック時イベントプロシージャの作成

コマンドボタンクリック時イベントプロシージャを作成します。

Private Sub Cmdコマンド_Click()

    DoCmd.OpenReport "rpt_sample", acViewPreview

End Sub
解説
  1. レポート rpt_sample を印刷プレビューで開きます。

動作確認

  1. デザインビューからフォームビューに切り替えます。
  2. コンピュータネーム相違でメッセージが開きます。

  1. 一旦終了し、次は、Shiftキーを押しながら、Accessファイルを開きます。
  2. VBEウィンドウを開き、プロシージャを使用しているPCのコンピュータネームに書き換えます。
  3. 再度、Accessファイルを開きます。

今回のおすすめポイント

ahtGetComputerName()

サンプルファイルでは、メインフォームにお使いのコンピュータネームを表示させています。

□はみ出しコラム
コンピュータネーム

Windows9系の場合でLAN接続の際にコンピュータの識別に用いられています。 Windows2000、XP系では従来のPCとの互換性のために存在します。 XP系の確認、設定方法は、コントロールパネルの「システム」から「コンピュータ名」に進みます。

関連ページ

ページの先頭へ 前ページへ戻る

 


メインフォームにコンピュータネームを用いたセキュリティ機能をつける : Access裏技Tips


 

-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。