• ベストアンサー

コマンドラインオプションにパスワードを指定したい

アクセス97です。 アクセス起動時に指定するコマンドラインオプションに データベースパスワードを指定したいのですが、 できません。 グループファイルによるユーザー名とパスワードの指定は できますが、データベース自体のパスワードの指定と いうのはでいないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.6

Ac2000の場合ですので97で使えるかわかりませんが、一応ご参考までに… ということで、以下のような方法はどうでしょうか? (ただし、新しいクエリやレポート等は一般ユーザーは勝手に 作成できなくなるかもしれません…。) ******************************* まず、システムをデータ専用のmdbとプログラム専用のmdbに分けます。(分けないと無理かと思います。) そして以下のようにします。 ●data.mdb ・テーブルとリレーション設定のみを作成 ・排他モードにてデータベースパスワードを設定 ●program.mdb ・data.mdbへのリンクテーブルとフォーム、クエリ、レポート等を作成 ・起動時にデータベースウィンドウを表示しない設定にする ・AllowBypassKey にて、パスワードを知らない限り ShiftキーOPENができないようにする ・クエリやレポート、フォーム等のオープンは オリジナルメニューなどを作って実行させる ・ツールバーの内容を変更できない設定にする ******************************* 以上のような状態にすればいいと思うんですが、このとき、 program.mdb内の既存のリンクテーブルは全て一旦消して 再度リンクテーブルを作り直す必要があります。 作り直すときは、あらかじめ先にdata.mdbにデータベース パスワードを設定しておきます。 その後program.mdb内の既存のリンクテーブルを全て消して 再作成するのですが、そのときにパスワードを求められます。 パスワードを入力してリンクテーブルを再作成します。 以上のようにして全てのリンクテーブルを作り直すと program.mdbにて、リンクテーブル作成やテーブルの インポートをする時にいつもパスワードを求められます。 パスワードを入力するとはじめて、リンクテーブルの作成や テーブルのインポートが可能となります。 パスワードを入力して作成したリンクテーブルでのみ、 data.mdb内のテーブルデータにアクセスできます。 program.mdbでは、そのリンクテーブルをもとにフォームを作成し、 起動時にデータベースウィンドウを表示しないようにすれば 目的のことが一応可能になるかと思います。 (コマンドラインを使う方法はわからないです。すみません。) 逆から言えば、data.mdbのパスワードを知らない限り、 program.mdbの中に余計なリンクテーブル作成やテーブルインポートは 一切できなくなります。 DAOなどでもパスワードを指定しない限りdata.mdb内のテーブルに アクセスできません。 もちろん2つ目の新しいprogram.mdbやを作ってもアクセスできませんし 他の既存のmdbからもアクセスできません。 また、こちらからもDAOなどを使っても、パスワードを知らない限り アクセスできません。 もし仮に、program.mdbのほかにprogram_second.mdbというファイルが 作ってあってそこにもdata.mdbのリンクテーブルが作ってあった場合でも、 そのリンクテーブルはパスワードなしに開けません。 (Ac2000だとこういう感じなんですが97では違うのでしょうか…?) ただ、この方法だと、新規のクエリなどが作成できないかもしれません。 (これはprogram.mdbだけですが。あたらしいprogram.mdbや他の既存mdbでは data.mdb以外のリンクテーブルをもとにしたクエリなら作れます。) なお、どうしても追加のクエリ等も作成させたいなら、 (これもAc2000の場合で恐縮ですが、)ダミーのクエリやレポートを いくつか作っておいて、それをオリジナルメニューで 表示できるようにしておき、必要な時に内容を変える…というかたちに するとできるかもしれません。 でも、テーブルをいじられたくないのにクエリを作っても良くする というのはまずい気もするので、一般ユーザーには勝手に 新規クエリも作らせない方がいいとは思うのですが(^^)。 Ac2000では、メニューバーに特定のフォームの起動や特定のクエリの オープンができるようにするためには 「表示」「ツールバー」「ユーザー設定」で、コマンドタブの 「全てのフォーム」「全てのクエリ」などで、オープンさせたい クエリ名をメニューバーにドラッグさせます。 (ヘルプメニューの横やオリジナルメニューバーなど) 階層型の新規メニューを作りたい場合は同じくコマンドタブの 「新しいメニュー」の「新しいメニュー」をドラッグします。 その中にさらに「新しいメニュー」を追加し、その中にクエリや フォームの名前をドラッグします。 オリジナルメニューバーの作り方は以下です。 ・「表示」「ツールバー」「ユーザー設定」で、ツールバータブを開く ・「新規作成」で、適当に名前を付けてメニューバーを作成 (この時点ではまだメニューバーではなくツールバーになっているようです) ・新しく作ったメニューバー名が青色反転選択された状態で プロパティボタンを押して、「ツールバープロパティ」を開く ・「種類」をツールバーからメニューバーに変更…(A) ・「閉じる」「閉じる」 ・小さなメニューバーが出来ていると思うので、既存のメニューバー の下などにドラッグ ・そこへ必要なクエリやフォームのメニューを追加する ・このメニューバーは「起動時の設定」で起動時のオリジナルメニューとして 既存のメニューバーとともに選択可能になります。 ※ただし、前述の(A)の設定をしないと、選択リストに表示されてきません。 いつもAc2000のケースで申し訳ないのですが、もしご参考になれば…。 また、もし全く流用できない場合はごめんなさい。

onakagoo
質問者

補足

すばらしい♪ 解決しましたっ! 分割もトライしてみたのですが、データの方にだけパスワード設定できるのは盲点でした。 当然、program.mdbの方でもパスワードを聞かれてしまうと 思い込んでいました。 起動時にデータベースウィンドウを表示しないようにする ことは既に行っております。 メニューなども表示できないようにプロテクトしています。 DBのメインメニューの中にこれらの規制を解除するボタンをプロシージャー内にパスワードを記述して設けてあります。 MDEにしておりますので、パスワードは解読できません。 ありがとうございました。 また、詳しく解説していただきありがとうございました。 本当に助かりました。 また、次回困ったときにはよろしくお願い致します。

その他の回答 (5)

  • cse_ri2
  • ベストアンサー率25% (830/3286)
回答No.5

要求する内容が、アクセスの機能を超えてしまってますね。 そこまで厳密にセキュリティ管理をするのであれば、 早めにMS-SQLServerかOracleに移行すべきでしょう。 しょせんAccessは個人ユースのソフトなんです。 あまり高機能を求めても、もともと出来ないのですから 仕方がありません。

onakagoo
質問者

補足

う~ん・・・ おっしゃる通りでございまする。 でも・・・サミシイ

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.4

いやそこまでご理解されているなら打つ手は殆どないですね。 ADOやDAOでデータ側のDBに接続して処理させる位なら可能でしょう。(参考URLを参照のこと) ただワークグループでの管理の時に「管理者」が居ると思いますが、このユーザを削除ないしこのユーザに権限を与えないようにすれば、ワークグループの管理でもある程度可能と思われます。どちらにしろコマンドラインでの指定は不味いでしょうね。 googleで「Access データベース パスワード 開く」で検索すると参考になるかも知れません。

参考URL:
http://homepage2.nifty.com/inform/vbdb/ado_lockeddb.htm
onakagoo
質問者

補足

う~ん・・・ なるほど。 でも、困った。どうしよ~

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.3

はじめまして。 ご質問の主旨からは、外れるかもしれませんが。一案としてご検討いただければ幸いです。 Windows2000以上のOSであれば、ファイルのプロパティに「セキュリティ」があり、ユーザーの権限を制限できます。特定のユーザーのみ利用可能となります。他のユーザーからはファイルを見ることさえ出来なくすることも出来ます。

onakagoo
質問者

補足

残念ですが・・・ 特定のユーザーは多数おります。 そのユーザーからテーブルを保護したいのです。 したがって、基本的に特定のすべてのユーザーに対して DBに対するアクセス権限は与えておかなければいけません。 フォームからアクセスすることは全ユーザーに許可し、 直接テーブルにアクセスすることは禁止したいのです。 何か他の手はあるでしょうか? よろしくお願いします。

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.2

ヘルプはご覧になられているようなので分かるかと思いますが、指定方法は明記されていません。(隠しコマンドがあるかも知れませんが・・・) なぜ、データベースにパスワードを指定するのか? また、パスワードをコマンドラインにつけてしまえば結局誰でも見れてしまうがそう言う意味で必要性が分からない。 つける理由がわかれば代替案もご提案できるかも知れません。

onakagoo
質問者

補足

おっしゃる通りです。 ご説明いたします。 テーブルにフォーム以外から直接アクセスできないようにしたいのです。 テーブルを直接見れると、必要以上の生データを一括して取り扱えてしまうので、セキュリティー上様々な問題が発生します。 DBはMDEにしたり、ツールメニューが使えないように ChangeProperty "AllowBypassKey", dbBoolean, False など様々な規制をしたりして、テーブルは一切見れないようにしてあるのですが、 他のDBからのインポートやテーブルのリンクはできてしまい、全部見れてしまいます。 そこで、他のDBからはパスワードで保護しようと考えました。 このDBを起動する時には、別のDBからコマンドラインオプションとしてパスワードを指定して起動できればいいな~と思ったわけです。 もちろん、起動をかける別のDBはMDEにしておきパスワードを見れなくしておきます。 グループファイルでユーザー管理も考えたのですが、 ユーザーが新しいグループファイルを勝手に作成して、全ての権限を与えDBを起動してしまえば一巻の終わり!???のようが気がします。 何かいい手はあるでしょうか? よろしくお願いします。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.1

パスワードはコマンドラインでないといけませんか? アクセスを起動して ツール→セキュリティ→データベースパスワードの設定 で設定出来ますが お気に召したら幸いです

onakagoo
質問者

補足

う~ん・・・私の説明が不明瞭で申し訳ないです。 データベースパスワードの設定の方法ではないです。 (ちなみに、排他モードで立ち上げないとパスワードは設定できません) 設定されたデータベースパスワードをスタートアップの コマンドラインオプションで指定して立ち上げたいのです。 これで解りましたでしょうか? よろしくお願いします。