电子 - node.js - fs.readFileSync在构建电子和程序文件

时间:2018-04-10 21:30:59

标签: javascript node.js electron

我已经成功构建了我的电子应用程序,似乎工作得非常好。

我使用节点模块fs来访问我的应用程序中使用的文件,这是Electron的标准事务。这与开发环境中的预期完全一致,即使我在C:\Users\myApp\中使用asar构建我的应用程序,我也可以从构建的电子应用程序中访问文件。

但是,当我创建了一个安装程序并放置了应用程序@ C:\Program Files(x86)\myApp\

fs.readFileSync

以前在C:\Users\myApp\中存在的开发版本和内置版本中都运行良好,现在需要以管理员权限运行才能读取文件,否则会引发错误。

有任何解释吗?

电子版:1.8.4 平台:Windows 7

1 个答案:

答案 0 :(得分:2)

我相信您可能希望将部分应用程序数据部署到%APPDATA%,即C:\ Users \ yourusername \ AppData \ Roaming,或者在电子的情况下,可以使用app将文件部署到userData文件夹中。 getPath('appData'),它引用C:\ Users \ yourusername \ AppData \ Local \ your_electron_app_name或app.getPath('userData')。 https://github.com/electron/electron/blob/master/docs/api/app.md#appgetpathname

在该目录中,您可以在不提升权限的情况下更改文件。

如果您在程序文件中查看电子申请文件夹的属性,并转到安全选项卡,您会注意到用户的权限设置是(读取和执行,列出文件夹内容和读取);但是,管理员可以访问完全控制(修改,读取和执行,列出文件夹内容,读取和写入)。

但是,如果您确实需要在程序文件中创建/编辑/删除文件,或者ProgramData需要提升权限并绕过它,您可能需要安装npm包electronic-sudo(https://www.npmjs.com/package/electron-sudo)或sudo-prompt(https://www.npmjs.com/package/sudo-prompt)。