我正在使用来自cmd的winutils.exe task create ip ipconfig
执行Hadoop命令,并使用Admin权限工作并显示结果。但是如果我在使用管理员权限的c#程序中尝试相同的操作,则会显示Access is denied
错误。
错误:
C:Hadoop\bin>winutils.exe task create ip ipconfig
createTask error (5): Access is denied.
答案 0 :(得分:0)
问题出在WinUtils.exe上。 WinUtils.exe在 task.c 文件的 createTask()方法中使用 AssignProcessToJobObject()。
在Windows 7中,如果Jobobject已经分配了一个进程,则“AssignProcessToJobObject”无法分配新进程并返回“拒绝访问”消息。
因此,当您以编程方式调用exe时,jobObject可能已经被分配了一个ProcessHandle,然后从“AssignProcessToJobObject”函数返回“Access Denied”。
修复:检查JobObject是否有任何关联进程,并且仅当jobObject未分配给任何进程时才分配新进程。确保您的更改仅适用于Windows 7环境,并允许在Windows 8及更高版本的环境中使用默认代码。
希望这有帮助。