2013-05-20 2 views
0

원격 시스템에서 실행 파일을 시작하려면 psexec을 사용하고 있습니다. 원격 시스템은 64 비트이고 psexec를 사용하여 푸시 된 exe는 32 비트입니다.액세스가 거부 된 ShellExecute가 실패했습니다.

"psexec"을 실행하는 동안 원격 시스템의 관리자 자격 증명을 제공하고 원격 프로세스가 해당 자격 증명을 사용하여 만들어집니다.

32 비트 exe는 원격 시스템에서 실행될 때 일부 작업을 수행 한 다음 ShellExecute를 사용하여 다른 실행 파일을 생성합니다.

Windows 7에서 ShellExecute가 오류 코드 5 (예 : SE_ERR_ACCESSDENIED)를 반환합니다. 대상 컴퓨터가 XP 일 때 전체 프로세스가 잘 실행되고 ShellExecute가 성공합니다.

동일한 아이디어 나 해결 방법이 있습니까? COM 초기화를 시도했지만 이점이 없습니다. 자세한 내용/코드가 필요한지 알려주십시오.

+0

아마 UAC 문제일까요? –

+0

UAC가 시스템에서 꺼져 있습니다. 해결 방법으로 CreateProcess를 사용하여 시도했는데 "실패시 로그온"을 의미하는 오류 코드로 1326을 반환합니다. CreateProcess 호출 전에 NetUseAdd() 추가하고 동일한 오류 코드를 반환합니다. 어떤 도움을 많이 주시면 감사하겠습니다. – user1624807

+0

CreateProcess에 전달하는 실행 파일 경로는 무엇입니까? 로컬 경로, UNC 경로, 매핑 된 드라이브 경로? –

답변

0

실제로 문제를 발견했습니다. 실제로 ShellExecute가 공유 위치에 있던 프로그램을 실행하려고했습니다. 내 생각 엔 공유에 액세스 할 수 없어 액세스가 거부되었다고 생각합니다. 대신 CreateProcess()를 사용하여 공유 연결이 프로세스를 실행하기 전에 이루어 졌는지 확인했습니다. 이것은 효과가있다!

관련 문제