문제

가능하지만 Windows 서비스 내에서 shFileOperation을 사용하는 것이 적절합니까? Shell32.dll의 모든 SHXXX API 기능은 사용자 수준 프로그램을 염두에두고 작성된 것 같습니다. shfileoperation이 GUI를 표시하지 않을 것이라고 확신 할 수 있습니까?

도움이 되었습니까?

해결책

나는 그것이 적절하지 않거나 권장되지 않는다고 말할 것입니다. Shell32 API의 대부분은 대화식 프로세스에 사용될 것이라는 기본적인 이해로 작성되었습니다. ShFileOperation이 UI 구성 요소를 표시하지 않을 것이라고 보장 할 수있는 방법은 없다고 생각합니다. 사실, 당신이 보면 Ifileoperation (Shfileoperation을 대체하는 새로운 Vista 인터페이스입니다)는 다음과 같습니다.

쉘 항목을 복사, 이동, 이름 바꾸고 작성 및 삭제하는 방법과 진행 및 오류 대화 상자를 제공하는 방법을 노출시킵니다. 이 인터페이스는 shfileoperation 함수를 대체합니다.

다른 팁

에 따르면 shfileoptstruct 문서화, 다음 플래그를 사용하여 UI가 나타나지 못하게 할 수 있습니다.

FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR

또는 (Windows Vista를 목표로하는 경우), FOF_NO_UI, 위의 것과 동일합니다.

바라본다 ShellAPI.h Windows SDK의 헤더 파일, FOF_NO_UI "UI를 전혀 표시하지 마십시오"라고 말하면서 사용해도 괜찮다고 생각합니다. SHFileOperation.

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

shfileoperation을 사용하는 Prinicpal의 이유는 UI로 작업을 수행하고/또는 가역적 인 작업을 수행하는 것입니다. 즉, 파일을 삭제하기 위해 shFileOperation을 사용하면 파일을 삭제하는 대신 파일을 재활용 빈에 배치하여 현재 대화식 사용자가 수행 된 작업을 취소하거나 취소 할 수 있습니다. 서비스가 비 대화식 데스크탑에서 실행됨에 따라 아무도 해당 재활용 빈을 제거 할 수 없습니다.

이 문제도 있었고 서버와 네트워크 공유간에 안전하고 안정적인 네트워크 파일 사본을 구현하는 작업을 수행했습니다 (대부분의 주식은 CIFS / NetApp Filer 기반) 및 SHFileOperation 때때로 실패합니다.

이제 사용을 시작했습니다 ROBOCOPY (Vista/Server 2008의 모든 Microsoft OS에서 기본적으로 사용할 수 있음)는 흥미롭고 신뢰할 수 있습니다.

이것은 내 눈을 뜨고 있습니다. https://stackoverflow.com/a/1030752/559144

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top