こんばんは。
少しですが、テストしてみました。
検証した結果を要約すると、
(I)UACがオンの状態で
(A)usersの書き込み権限のない(フルコントロールでない)HHD領域にmdbファイルを作成しようとすると、
(1)管理者の場合、
(1-a)C:\(起動disk内?)であれば、C:\Users\<ユーザー名>\AppData\Local\VirtualStore\に作成され、
(1-b)USB接続HDDであれば、アクセス許可が'読み取りと実行','読み取り'のファイルが作成されます。
(2)非管理者の場合、
mdbを作成することは不可能。以下のアラーとが出てファイルは作成されません。
'ファイル'G:\TEST.mdb'を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。'
(B)usersの書き込み権限のある(フルコントロールの)HHD領域にmdbファイルを作成しようとすると、
非管理者/管理者ともに、mdbは作成され、Accessで開くことが可能。
作成されたファイルの、アクセス許可は'フルコントロール'。
(II)UACがオフの状態で
(1)管理者の場合
(2)非管理者の場合
ともに、どのdisk領域でも、mdbは作成され、Accessで開くことが可能。
ただし、作成されたアクセス許可は、(I)UACがオンの状態のときと同じで、HHD領域の書き込み権限の有無で決まる。
(1-b)で作成されたmdbファイルは、Access2010で開くことは不可能で、下記のアラーとが表示されます。
'このデータベースの保存に使用されたAccessのバージョンを確認できません。このデータベースは読み取り専用になっているため、この問題を修正することはできません。[OK]をクリックし、データベースを閉じてからデータベースのバックアップコピーを作成してください。その後に、読み取り/書き込みのアクセス許可でデータベースを開いてください。'
(1-b)で、UACをオフにしてみると(再起動後)、Access2010で開くことが可能になります。
しかし、再度UACをオンにすると、Access2010で開くことはできますが、読み取り専用とアラーとが表示されます。
(II)UACがオフの状態でusersの書き込み権限のない(フルコントロールでない)HHD領域に作成されたファイルは、UACをオフに変更すると、
(UACをオフの状態で一度Accessで開いていれば)、開くことはできますが、読み取り専用とアラーとが表示されます。
(UACをオフの状態で一度もAccessで開いていなければ) Access2010で開くことは不可能で、下記のアラーとが表示されます。
'このデータベースの保存に使用されたAccessのバージョンを確認できません。このデータベースは読み取り専用になっているため、この問題を修正することはできません。[OK]をクリックし、データベースを閉じてからデータベースのバックアップコピーを作成してください。その後に、読み取り/書き込みのアクセス許可でデータベースを開いてください。'
ユーザーにDiskのフルコントロール権限を与えると、(B)の状態になり問題なくmdbは作成され、Accessで開くことが可能。
上記の結果から、UACの有無にかかわりなく、ファイルを作ろうとした領域におけるユーザーのアクセス許可の状態に依存しているようで、
UACはこれに基づいた制限をかけていることが確認できました。
Access2010は、以前のバージョンで作成されたものである場合、データを読み込む前にファイルに何か修正(変更)を加えるようで、書き込み権限がないとこればできないので開けないことになってしまうようです。接続文字列に、'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<データベース>;'を与えているところが怪しく思えますが。。
そういえば、どうしてWindows7 SP1 64bitでこの文字列で動くのか前から疑問でしたが。。
まだ検証していませんが'Jet OLEDB:Engine Type=5;'を追加したらいいのでしょうか。。
まだまだいろいろ検証しなければならないことは、わかっているのですが
明日のお仕事に差し障るのでこのくらいで。。
とりあえずご報告まで。
ここは間違っているなどありましたらご指摘ください。
ではでは。
|