gpt4 book ai didi

c++ - 某些 exe 中的 OpenFileMapping 访问被拒绝

转载 作者:可可西里 更新时间:2023-11-01 10:28:51 26 4
gpt4 key购买 nike

我有一个使用

写入变量的程序
CreateFileMapping (INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE , 0, sizeof(data), "Local\\testtest");

然后我将 dll 加载到 firefox 的 plugin-container.exe(以本地登录用户身份运行)调用

OpenFileMapping(FILE_MAP_READ,  FALSE, "Local\\testtest");

这很好用。但是,当我尝试将我的 dll 加载到 iexplore.exe(也以本地登录用户身份运行)进行相同操作时,我得到一个 NULL 值并且 GetLastError 返回 (0x5) ACCESS DENIED。

我尝试调整 dll 中进程的权限以添加 SE_CREATE_GLOBAL_NAME 但这没有任何区别(而且我没想到它会因为权限只需要创建一个我相信的全局名称而不是本地名称我正在使用)。

无论我尝试什么,iexplore.exe 都会失败并显示 ACCESS DENIED。我发现的唯一解决方法是以管理员身份运行我的 setter 程序并以管理员身份运行 iexplore.exe 然后它就可以读取它。但我不认为这是一个解决方案,因为我真的想避免必须在管理员下运行整个 exe。

有人知道解决这个问题的方法吗?

最佳答案

如果安全性不是问题,只是想让它正常工作,您还可以将文件映射的 DACL 设置为 NULL,这样每个人都可以完全访问。

下面是一个例子。

SetSecurityInfo(handle, SE_KERNEL_OBJECT, 
DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION,
NULL, NULL, NULL, NULL);

但请理解,如果您担心安全问题,不建议这样做。

关于c++ - 某些 exe 中的 OpenFileMapping 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com