VB2019 Access Programfiles 読み取り専用 解除

タグの編集
投稿者 ロト君  (社会人) 投稿日時 2020/12/25 15:35:07
今、VB2019を使って在庫管理ソフトを作ろうとしています。

Setup.exeで本体のデータSoft.exeとdata.accdbをProgramfiles内にインストールさせて、使ってみようと思いましたら。
data.accdbが読み取り専用で動くようで、Insertしようとすると、デバッグが起動します・・・。

どのようにしたら、読み取り専用ではなく動くのでしょうか??




環境====
Windows10
VisualSutadio2019 Visual Basic2019
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/12/25 17:16:27
アプリケーションのインストールには、二つの形態があります。

「インストールした本人しか使えないが、読み書き可能」な Per User Install と、
「誰でも使えるが、書き込みはインストール時のみで、実行時は読み取り専用」な Per Machine Install です。

前者は、C:\Users\ユーザー名\~ などの個人別フォルダーが使われ、
後者は、C:\Program Files\~ などが使われることが多いです。

そして Program Files への書き込みは、インストール時にのみ行われ、
その後は、管理者であったとしても読み取り専用でのアクセスとなります。
(アプリケーションを「管理者として実行」モードで起動すれば、書き込みも可能ですが)


Windows に誰でログオンしていたとしてもアクセスできるようにしつつ、
データの編集も行いたいのであれば、Soft.exe は Program Files のままで良いですが、
データベースファイルだけは、「誰でもアクセス可能なフォルダー」を用意して、
そこに配置する必要があるでしょう。
投稿者 (削除されました)  () 投稿日時 2020/12/25 18:32:41
(削除されました)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/12/25 18:35:12
もし、Program Files に配置したいのであれば、
単に .accdb や .mdb に対して編集権限を与えるだけでは足りません。

それらを開く際には、同じフォルダーにロックファイル(.laccdb / .ldb) を
配置する必要があるためです。そのためには、該当フォルダーに対して
一般ユーザーに対する書き込み権限を与えねばならないという事を意味します。

しかし一般ユーザーが Program Files 上のファイルへ書き込むことは
セキュリティホールにもなりえるため、基本的に非推奨となっています。


どうしてもというのであれば、VirtualStore へのリダイレクトという手もあるのですが、
その場合、別ユーザーの編集結果を閲覧できないなどの弊害が起きるので、
今回の要件では使えるものではなさそうです。
https://laboradian.com/windows-virtualstore/

やはり、データファイルの置き場所を見直した方が良いでしょう。
投稿者 ロト君  (社会人) 投稿日時 2021/12/18 01:16:33
成程。了解です!!