2013-05-20 3 views
1

우리는 특정 파일을 단순히 복사/대체하여 클라이언트 컴퓨터에서 우리 소프트웨어를 업데이트하는 작은 유틸리티를 가지고 있습니다. 파일은 EXE와 DLL로 구성됩니다. 모든 우리의 한 고객을 제외하고, 잘 작동합니다. Active Directory 도메인을 보유하고 있지만 많은 컴퓨터에서 DLL 파일은 오류 코드 5 (액세스가 거부 됨)로 복사되지 않습니다. 응용 프로그램이 관리자 권한으로 실행되는 경우에도 컴퓨터에 관리자로 로그인 한 상태 여야합니다. XP, Vista 및 7 대의 모든 시스템에서 발생합니다. EXE 파일은 잘 복사되거나 바뀌지만 DLL 파일은 아닙니다. DLL이 없으면 잘 복사됩니다. 그러나 교체가 필요하다면 실패합니다. 특정 클라이언트 용 DLL 파일을 복사 할 때 액세스가 거부되었습니다.

이 파일

이 API 호출을 사용하여 복사됩니다

function CopyFile(lpExistingFileName, lpNewFileName: PWideChar; bFailIfExists: BOOL): BOOL; stdcall; 

소스가 자동으로 자동 압축 풀림 패키지에 의해 생성 된 임시 폴더이며, 우리의 소프트웨어가 설치된 곳마다 대상입니다 (레지스트리 키에 의해 확인 우리의 것). 대상은 가장 일반적으로 C : 루트의 디렉토리이지만 프로그램 파일 (x86)과 컴퓨터의 다른 곳에서도 발생합니다. IT 담당자는 도메인을 차단하지 못하도록 특별한 설정이 구성되어 있지 않다고 주장합니다. 이것은이 문제가있는 유일한 고객이며 모든 20 대 이상의 컴퓨터에서 발생합니다. 그러나 수동으로 Windows를 통해 파일을 복사하면 파일 복사/바꾸기가 잘됩니다. 이 파일의 속성을 검사했는데 숨김 또는 읽기 전용이 아닙니다.

올바른 액세스를 위해 수행해야 할 다른 조치는 무엇입니까? 관리자로 실행하는 것이 트릭을 수행하지 않으므로?

+0

MSDN (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363851%28v=vs.85%29.aspx) 대상 파일이 이미 있으면이 함수는 ERROR_ACCESS_DENIED와 함께 실패합니다. FILE_ATTRIBUTE_HIDDEN 또는 FILE_ATTRIBUTE_READONLY 속성 세트가 있습니다. –

+0

진짜 질문이 아닙니까? 주제를 벗어? 왜 그렇게 생각하니? 내가 무엇이든지하면 나는 너무 현지화 될 것이라고 예상했다. 그리고 이러한 파일은 숨기거나 읽기 전용이 아닙니다. –

+0

"대상은 가장 일반적으로 C : 루트의 디렉터리이지만 프로그램 파일 (x86) 및 컴퓨터의 다른 곳에서도 발생합니다." - 소프트웨어를위한 유일한 곳은 "프로그램 파일"입니다. "C : root"와 "anywhere else"는 용어로 존재해서는 안됩니다! –

답변

2

업데이트 유틸리티를 procMon으로 추적하십시오. ACCESS_DENIED 오류가 표시되어야합니다. 그들을 분석하십시오. 명의 도용. 또한 소프트웨어 IPS, "Angry"Antivirus 또는 Software Restirction/AppLocker를 구성했는지 질문하십시오. 마지막 문제는 문제와 관련이 없지만 시도해보십시오. 문제가되지는 않지만 유틸리티가 32 비트이고 매니페스트가없는 경우 OS (Vista 이상)에서 자동으로 리디렉션 될 수 있습니다.

업데이트 : 프로그램이 너무 오래된 경우 (즉, 소프트웨어/데이터 위치에 대한 MS 권장 사항을 준수하지 않는 경우) MS ACT (Microsoft Application Compatibility Toolkit (ACT))은 친구가 될 수 있습니다.