DOBON.NET DOBON.NETプログラミング掲示板過去ログ

MDBファイルのパスワードを変更したい

環境/言語:[VB2005 WindowsXP]
分類:[.NET]

先ほどの質問に加え、もう少し皆さんのお知恵をお貸し下さい。

MDBファイルをオープン、読込み、保存(SQL文の実行)と行っているのですが、
パスワードの変更をどうしたらいいのか悩んでいます。

ネットなど参考資料を探していると、SQL文で”Alter DB 旧パスワード NEWパスワード"で実行できるとの情報を得たのですが、ACCESSファイルを排他でオープンしなければならないとの事。
私自身、OLEDBを利用してACCESSファイルにアクセスしているのですが、排他オープンを(恥ずかしながら)意識した事がなく、どうやっていいのか分からない状態なのです。

どなたかオープンの仕方、またはパスワードの変更方法など
知っていましたら教えていただけないでしょうか。

宜しくお願いします。
2008/12/09(Tue) 16:29:59 編集(投稿者)

■No23511に返信(sakuさんの記事)
> パスワードの変更をどうしたらいいのか悩んでいます。
mdb には、ユーザー別のパスワードと、データベース全体のパスワードの
2 種類がありますが、後者の方なのですね?
http://office.microsoft.com/ja-jp/access/HP010322081041.aspx

> SQL文で”Alter DB 旧パスワード NEWパスワード"で実行できるとの情報
ではなく、“ALTER DATABASE PASSWORD 新パスワード 旧パスワード”かと。

http://yaplog.jp/orator/archive/51
http://yaplog.jp/orator/archive/52
http://yaplog.jp/orator/archive/53

> 排他オープンを
Dim oldPass As String = "PassNashi"
Dim newPass As String = "NewPass"

Dim sb As New OleDbConnectionStringBuilder()
sb.Provider = "Microsoft.JET.OLEDB.4.0"
sb("Mode") = "Share Exclusive"
sb("Jet OLEDB:Database Password") = oldPass
sb.DataSource = "C:\sample.mdb"

Using con As New OleDbConnection(sb.ToString())
 con.Open()
 MsgBox("開きました。", vbSystemModal)
 Using cmd As New OleDbCommand(String.Format("ALTER DATABASE PASSWORD {0} {1}", newPass, oldPass), con)
  cmd.ExecuteNonQuery()
 End Using
 MsgBox("変更しました。", vbSystemModal)
 con.Close()
End Using

---- Mode プロパティ ----
Read
 読み取り専用
Write
 書き込み専用
ReadWrite
 読み取り可能、書き込み可能
Share Deny None
 共有(排他で開かない)
Share Deny Read
 他のユーザーは読み込めない
Share Deny Write
 他のユーザーは書き込めない
Share Exclusive
 他のユーザーは読み書きできない
魔界の仮面弁士さん、お返事ありがとうございました。
まさしく知りたかった内容です。
(Modeの話は見つけたのですが、どうやって設定したらよいのかわかってなかったんです。助かりました。)

これを元に作業を進めていこうと思います。
ありがとうございました。


■No23512に返信(魔界の仮面弁士さんの記事)
> ■No23511に返信(sakuさんの記事)
>>パスワードの変更をどうしたらいいのか悩んでいます。
> mdb には、ユーザー別のパスワードと、データベース全体のパスワードの
> 2 種類がありますが、後者の方なのですね?
> http://office.microsoft.com/ja-jp/access/HP010322081041.aspx
>
>>SQL文で”Alter DB 旧パスワード NEWパスワード"で実行できるとの情報
> ではなく、“ALTER DATABASE PASSWORD 新パスワード 旧パスワード”かと。
>
> http://yaplog.jp/orator/archive/51
> http://yaplog.jp/orator/archive/52
> http://yaplog.jp/orator/archive/53
>
>>排他オープンを
> Dim sb As New OleDbConnectionStringBuilder()
> sb.Provider = "Microsoft.JET.OLEDB.4.0"
> sb("Mode") = "Share Deny Write"
> sb("Jet OLEDB:Database Password") = "PassNashi"
> sb.DataSource = "C:\sample.mdb"
>
> Using con As New OleDbConnection(sb.ToString())
>  con.Open()
>  MsgBox("開きました。", vbSystemModal)
>  con.Close()
> End Using
>
> ---- Mode プロパティ ----
> Read
>  読み取り専用
> Write
>  書き込み専用
> ReadWrite
>  読み取り可能、書き込み可能
> Share Deny None
>  共有(排他で開かない)
> Share Deny Read
>  他のユーザーは読み込めない
> Share Deny Write
>  他のユーザーは書き込めない
> Share Exclusive
>  他のユーザーは読み書きできない
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板