2008-10-14 4 views
1

Windows 서비스 내에서 SHFileOperation을 사용하는 것이 가능합니까? shell32.dll의 모든 SHxxx API 함수는 사용자 수준 프로그램을 염두에두고 작성된 것 같습니다. SHFileOperation이 GUI를 표시하지 않을 수도 있습니까?Windows 서비스 내에서 SHFileOperation 사용

답변

2

나는 그것이 적절하거나 권장되지 않는다고 말할 것이다. 대부분의 shell32 API는 대화 형 프로세스에서 사용된다는 기본적인 이해로 작성되었습니다. SHFileOperation이 UI 구성 요소를 절대 표시하지 않는다고 보장 할 수있는 방법이 없다고 생각합니다. 당신이 (SHFileOperation를 대체 비스타의 새로운 인터페이스 인) IFileOperation를 보면 사실, 그것은 분명히 상태 :

는 복사, 이동, 이름 변경, 생성하고, 쉘 항목뿐만 아니라 메소드를 삭제하는 방법을 공개합니다 진행 및 오류 대화 상자를 제공하십시오. 이 인터페이스는 SHFileOperation 함수를 대체합니다.

+0

이 시점에서 동의합니다. 보안 설명자와 함께 파일을 복사하는 것처럼 보이기 때문에이 파일을 사용하려고 생각했습니다. 표준 CopyFile은 그렇지 않으므로 동일한 동작을 얻으려면 추가 코드가 필요합니다. – Charles

6

SHFILEOPTSTRUCT 문서에 따르면, 당신은 나타나지 모든 UI를 방지하기 위해 다음과 같은 플래그를 사용할 수 있습니다

FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR 

또는과 동일, FOF_NO_UI (Windows Vista를 대상으로하는 경우) 위. 이에서 나는 그것이 SHFileOperation를 사용하는 OK의 가정 있도록 윈도우 SDK에서 ShellAPI.h 헤더 파일을 찾고

, FOF_NO_UI에 대한 코멘트는 말한다, "전혀 어떤 UI를 표시하지 않습니다."

1

나는 동의해야한다 : 적절하지 않거나 적당하지 않다.

SHFileOperation을 사용하는 이유는 UI를 사용하여 작업을 수행하거나 되돌릴 수 있기 때문입니다. 나는. SHFileOperation을 사용하여 파일을 삭제하면 파일을 삭제하지 않고 휴지통에 저장하여 현재 대화 형 사용자가 삭제를 취소하거나 수행 한 작업을 취소 할 수 있습니다. 서비스가 대화 형이 아닌 데스크톱에서 실행되므로 아무도 해당 휴지통을 지울 수 없게됩니다.

0

서버와 네트워크 공유 (대부분 공유는 CIFS/NetApp 파일러 기반)에서 안전하고 안정적인 네트워크 파일 복사본을 구현할 때도이 문제가 발생했으며 SHFileOperation은 때때로 실패합니다.

은 이제 ROBOCOPY (Vista/Server 2008 이상의 모든 Microsoft OS에서 기본적으로 제공됨)을 사용하여 시작되었으며 실제로 흥미롭고 안정적으로 보입니다.

내 눈이 열렸습니다. https://stackoverflow.com/a/1030752/559144