Hadoop命令在Windows7中从c#代码执行时不起作用,错误显示:"访问被拒绝"

时间:2014-09-18 06:14:41

标签: windows hadoop permissions

我正在使用来自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.

1 个答案:

答案 0 :(得分:0)

问题出在WinUtils.exe上。 WinUtils.exe在 task.c 文件的 createTask()方法中使用 AssignProcessToJobObject()

在Windows 7中,如果Jobobject已经分配了一个进程,则“AssignProcessToJobObject”无法分配新进程并返回“拒绝访问”消息。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms681949(v=vs.85).aspx 因此,当您以编程方式调用exe时,jobObject可能已经被分配了一个ProcessHandle,然后从“AssignProcessToJobObject”函数返回“Access Denied”。

修复:检查JobObject是否有任何关联进程,并且仅当jobObject未分配给任何进程时才分配新进程。确保您的更改仅适用于Windows 7环境,并允许在Windows 8及更高版本的环境中使用默认代码。

希望这有帮助。