2012-03-06 1 views
0

사용자가 문서를 열어 놓은 상태에서 문서를 잠그는 소프트웨어의 새로운 기능을 구현하려고합니다 (이전에 파일을 읽기 또는 쓰기 용으로 열었지만 그 기간 동안 손잡이를 열지 않았 음).파일에있는 모든 잠금 보유자에 대해 창을 쿼리하는 방법

핸들을 유지하고 쓰기 전용 모드로 여는 것은 간단합니다.

내 질문은 특정 파일을 쓰기 액세스 권한으로 열 수 없다는 것을 알기 위해 윈도우를 쿼리하는 방법입니다. 사용자/엔티티가 이미 쓰기 액세스를 위해 파일을 잠근 상태입니까?

예 :

_fsopen(m_ClipboardFilename, "wb", _SH_DENYWR); 

또는

이들의
CStdioFile listFile(strLabelfile, CFile::typeText | CFile::modeRead | CFile::shareDenyWrite | CFile::modeNoInherit); 

어느 독점 쓰기 액세스가 지정된 파일을 엽니 다 (또는 오류가 공유 위반 또는 다른 문제가 발생했습니다 여부를 나타내는 실패) .

는하지만 내가 원하는 것은 공유 위반이있는 경우 잠긴 파일이 "사람"을 발견하는 것입니다, 그래서

샘에 PC-007, 가지고 나는 현재 사용자에게보고 할 수 있습니다 이 파일은 잠겨 있습니다. 읽기 전용 모드에서만 열 수 있습니다. 계속 하시겠습니까?

파일을 잠근 사람이 누구인지 알려주는 유틸리티가 있습니다. 잠금 설정을 강제로 해제하여 파일을 조작 할 수 있습니다 (sys-admin 유형 utils). 따라서이 정보를 쿼리 할 수있는 방법이 있어야합니다.

답변

1

레이몬드 첸 recently explained how to do thisRestart Manager을 사용합니다.

이것은 파일을 열어 놓은 프로세스를 알려주지 만 파일이 다른 서버 인 경우 매우 유용한 정보가 있는지 알려주지 않습니다.

+0

불행히도 이것은 끔찍한 부끄러운 해결책입니다. MS는 실제로 모든 사람이 특정 응용 프로그램이 열려고하는 모든 DLL 또는 파일에 대해 IFileInUse를 구현할 것이라고 생각합니까?! Yikes! Word와 Excel처럼 해킹을해야하며, 소프트웨어가 열리면 파일을 잠근 사용자를 나타내는 임시 파일을 작성해야합니다 (쓰기 전용). – Mordachai

관련 문제