Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Electron应用程序的sudo.exec中编写代码_Javascript_Macos_Electron_Sudo_Permission Denied - Fatal编程技术网

Javascript 在Electron应用程序的sudo.exec中编写代码

Javascript 在Electron应用程序的sudo.exec中编写代码,javascript,macos,electron,sudo,permission-denied,Javascript,Macos,Electron,Sudo,Permission Denied,我需要在许多地方执行具有管理员权限的代码。我找到sudo.exe并成功提示用户输入权限和密码。我仍然不知道如何确切地使用sudo.exe。因为我在删除需要管理员权限的文件时遇到了相同的错误,权限被拒绝。这就是我的代码的样子: const fs = require('fs') var sudo = require('sudo-prompt'); var options = { name: 'Electron', }; sudo.exec('echo hello', options,

我需要在许多地方执行具有管理员权限的代码。我找到sudo.exe并成功提示用户输入权限和密码。我仍然不知道如何确切地使用sudo.exe。因为我在删除需要管理员权限的文件时遇到了相同的错误,权限被拒绝。这就是我的代码的样子:

const fs = require('fs')
var sudo = require('sudo-prompt');

var options = {
    name: 'Electron',
};

sudo.exec('echo hello', options,
    function(error, stdout, stderr) {
    if (error) throw error;

    // Code that I want to run with admin rights

    fs.unlinkSync("/private/var/log/fsck_hfs.log", (err) => {
        alert("File succesfully deleted");
    });
}
);
我认为此方法只能用于运行命令,在本例中,类似于echo hello。如果我真的想执行一段代码而不是一个命令呢? 这种方法有效吗?或者还有其他方法可用吗


在Electron中是否有更好的方法来获取权限?

sudo prompt
将获得您传递给它的命令更高的权限,而不是您在回调中运行的代码。您必须为每个要执行的命令调用
sudo.exec()
。例如:
sudo.exec(“rm/private/var/log/fsck_hfs.log”,options,(e,stdout,stderr)=>{}