在 Windows 7 的 Program Files 中安装应用程序时无法打开数据库文件

Posted

技术标签:

【中文标题】在 Windows 7 的 Program Files 中安装应用程序时无法打开数据库文件【英文标题】:Unable to open database file when the App is installed in Program Files in Windows 7 【发布时间】:2019-03-15 03:11:01 【问题描述】:

我有一个 php 桌面应用程序。此应用程序在Windows XP中成功安装并测试,但是在Windos 7中安装时出现问题,在c:\Program Files\myApp文件夹下,无法打开数据库文件并导致错误消息:

SQLite3::query: 无法在 C:\Program 打开数据库文件 文件\myApp\www\checkLogin.php

注意:- 我的数据库在同一个 位置作为 PHP 脚本,即 www\myDatabase.db 。

我用来连接数据库的代码是:-

class MyDB extends SQLite3 
 
    function __construct() 
    
      $this->open('myDatabase.db');
    
 
 $db = new MyDB();

 if(!$db) 
 
   echo $db->lastErrorMsg();
 

如果我在其他位置重新安装应用程序,例如 C:\myApp,则没有问题,应用程序运行成功。

(我个人认为这更多是操作系统的安全问题。)

那么,是什么导致数据库文件被禁止在 Program Files 文件夹中打开?以及如何克服这个问题?

【问题讨论】:

【参考方案1】:

通常建议直接安装到您的根驱动器示例C:\myApp 这是因为 Windows 的User Account Control 设置会阻止某些功能来保护您的系统。

更改 UAC 设置可能会允许您的程序从任何其他目录运行,但会使您的计算机面临来自恶意程序的其他风险。

【讨论】:

好吧。但是,当我们安装其他商业应用程序时,它们可以从 Windows 的 Program Files 文件夹中运行。那么从这个角度来看,应用程序公司如何设法从同一个文件夹(即 Program Files)运行它们? 您的问题是离开堆栈溢出的边界,它更像是superuser question,但要解释一下 php 应用程序是基于服务的应用程序,这意味着它们在服务器的后台运行,或者有时在那里创建自己的服务器窗口不会授予任何可能损害操作系统的服务的权限,如果您对基于服务的应用程序不小心,可能会发生这种情况。因此,您运行该应用程序的风险由您自己承担,但此类安全未来在旧操作系统中不可用,因此它适用于 Windows XP 但不适用于 Win7。

以上是关于在 Windows 7 的 Program Files 中安装应用程序时无法打开数据库文件的主要内容,如果未能解决你的问题,请参考以下文章

重磅灰度第20次增持687FIL,持仓7.06万FIL,首批获利40.19%

自动程序更新和 Windows 7

Qt Creator 链接器错误:LNK1104:无法打开 fil 'usb-1.0.lib' - Windows

如何在 Windows 的发布模式下避免“program.exe 已停止工作”窗口?

如何在 Windows 10 中将 program.exe 设置为默认浏览器?

Qt Creator - 无法使用调试器:program.exe 不是可执行格式:文件格式无法识别