::createFile winApi 失败,出现错误 5 (access_denied).是外壳编程或其他解决方案或任
::createFile winApi fails with error 5 (access_denied) . Is shell Programming or other solution or any hint.
我在互联网上的某个地方发现了这个问题,现在面临同样的问题。几乎没有变化,我已经在下面修改了问题。
问题:
我想访问远程机器(10.10.20.30(上的文件,但我不明白如何在我的程序中登录到该机器。是否有任何简单的 win api 采用网络路径、凭据并返回文件句柄?我只想访问\10.10.20.30\共享文件夹\测试.txt。任何建议都会有所帮助。
很抱歉在编码意义上不是很清楚。细节:我想访问在共享文件夹中共享的文件,但没有授予我权限。我正在使用 ::创建文件来获取文件的手。但在这种情况下,我收到错误代码 5 (ACCESS_DENIED(。我需要使用用户(我的客户端(凭据(用户名密码(来访问共享的文件。我只需要文件的句柄。告诉我我是否错了::在这种情况下,不能通过使用或修改 MSDN 所说的安全属性来使用创建文件。CreateFile 在打开现有文件时忽略 lpSecurityDescriptor 成员。我也想过使用Window shell,但无法找到解决方案。
问题详情*好吧,远程机器的要求是这样的,我没有 EveryOne 权限。让我通过一个例子来解释。假设存在具有至少 3 台计算机的某个域的网络,例如 5 台计算机。现在有名称是C1(客户端(,C2(目的地(,C3,C4,C5。现在在这种情况下,我将在 C2 机器上创建一个文件(任何类型的(,并将其放在一个文件夹中,例如 MyFolder。现在让它共享,然后从中删除 EveryOne。之后,添加C5作为用户以访问它。现在你可以看到只用 ::CreateFile 实现编写一些代码,并在机器 C1(客户端(和 C5(它有权限(上运行它。您将看到客户端(C1(将收到错误5,这意味着ACCESS_DENIED但C5将执行它并将获得文件句柄......现在我再次重复我的问题,我需要通过我的用户名和密码以任何方式获取文件句柄,我的程序将从该 C1 机器获取句柄。*
请指教我提前致谢
::创建文件失败,访问被拒绝是外壳编程或其他解决方案或提示
如果你的应用未在具有足够权限访问该文件的用户帐户下运行,则必须暂时模拟具有访问权限的用户。 使用 LogonUser()
登录到所需的用户帐户并为其获取令牌,然后将该令牌传递给 ImpersonateLoggedOnUser()
以模拟该用户,然后调用 CreateFile()
(将使用模拟的权限(并根据需要使用该文件,然后关闭文件并调用 RevertToSelf()
停止模拟。
当CreateFile
失败并ERROR_ACCESS_DENIED
时,这意味着调用CreateFile
的进程在没有足够的权限来执行此操作的用户帐户下运行。
您可以通过以下方式解决问题:
- 授予该用户足够的权限。
- 在具有足够权限的其他用户帐户下运行进程。或者使用模拟调用具有其他用户令牌
CreateFile
。 - 保护有问题的文件,以便原始低权限用户有权执行该操作。
这里的底线是,再多的编码也无济于事。此问题完全与所讨论的文件系统对象的安全性有关。这是一个管理问题,而不是编程问题。
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 未达到的情况会影响开关外壳性能
- 开关:无外壳中断
- C++序列生成器,按函数外壳具有初始化值
- 打开 Docker 撰写文件中每个服务的外壳选项卡
- 如何使用IExecuteCommand和动词在上下文菜单外壳扩展中显示本地化文本和自定义图标?
- "Access is Denied" U盘上的创建文件()
- 具有管理员权限的外壳执行不会结束
- 在 C 中获取背景外壳命令的 PID
- 如何获取包含 NULL 字符的外壳代码字符串的长度
- Windeployqt不会运行,"Access is denied."
- 'Cannot output file filename.exe Permission denied' C++ 代码::块中的错误
- 为什么错误"permission denied","id returned 1 exit status"仅在 IM 使用 C++ 中的头文件 fstream 时才出现
- 该程序没有向我打开外壳
- /TMP 中的 MKDIR 不起作用:"Permission Denied"
- 测量执行时间 - 在程序代码或外壳中
- 外壳追加重定向替换现有文本
- 在更改C 外壳中的目录时,如何捕获许可错误
- dll 外壳扩展如何知道要执行的程序位置?