Microsoft MVP성태의 닷넷 이야기
글쓴 사람
에릭 (nicety17 at hanmail.net)
홈페이지
첨부 파일

안녕하세요? 작가님,

구글을 아무리 뒤져도 원하는 답이 안나와서 질문 드립니다.

 

WMI 쿼리로 Logical Drive 정보를 받아오려고 하는데,

이 결과값이 콘솔 또는 Visual studio로 실행 할 때와 Windows Service로 deploy 해서 실행하는 결과값이 다릅니다.

 

 

사전 조건은,

Desktop에 네트워크 드라이브가 연결 된 상태에서

 

 - Windows Terminal로 Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DriveType = '4'" 를 보내거나,

 - 동일한 코드를 Console App으로 만들거나,

 - 동일한 코드를 서비스 앱으로 만들어서 Visual Studio로 디버깅을 하면 원하는 값이 출력 됩니다만,

 

 이상하게 윈도우 서비스로 deploy만 해서 실행하면 WMI 쿼리의 응답값이 안들어 옵니다. (쿼리에 where 문을 쓰지 않으면 Local Disk C, D 드라이브는 제대로 검색 됩니다)

 

서비스 프로젝트 첨부합니다.

혹시 제가 놓치고 있는 부분이 어떤건지 알려 주실 수 있을까요? 항상 감사드립니다.








[최초 등록일: ]
[최종 수정일: 8/20/2022]


비밀번호

댓글 작성자
 



2022-08-20 12시10분
[에릭] 심플하게 다시 정리하면,

WMI 쿼리로 콘솔, Visual Studio 디버깅에서는 네트워크 드라이브가 검색이 되는데, 왜 서비스로 deploy를 했을 때만 검색 되지 않는지 입니다.
[guest]
2022-08-20 12시40분
네트워크 드라이브를 연결한 데스크톱 사용자와 NT 서비스가 실행되는 계정이 같나요? 다음의 글을 참고하시고,

Windows NT Service에서 UI를 다루는 방법
; https://www.sysnet.pe.kr/2/0/13120

아마 제가 알기로는 NT 서비스와 로그인한 사용자의 세션이 달라지긴 하지만 네트워크 드라이브 연결에 대한 정보는 세션 별로 나뉘진 않을 것입니다.
정성태
2022-08-22 11시12분
[승준] 네트워크 드라이브 접속 계정과 로그인 계정이 다를 경우 관리자로 실행하지 않으면 문제가 발생할 수 있습니다.
몇달전에 딱 저런 상황에서 네트웍 드라이브의 파일을 읽고 쓸일이 있었는데.
전혀 안되더라고요. 디버깅이 불가능한 완전 폐쇄 시스템이라 한참 고생했었네요.
[guest]
2022-08-22 03시21분
[에릭] 오늘 다시 확인해보니,

서비스는 세션0 (System)에서 실행 중이고, 제가 확인 했던 방법들 (PowerShell, Visual studio 디버깅, console app)은 모두 세션1 에서 구동 되고 있었네요. 현재까지의 현상만 보면 세션에 따라 WMI 쿼리의 결과가 다른것 처럼 보이는데, 이걸 증명할 방법이 마땅찮네요 ㅠㅠ

윈도우 서비스를 세션1에서 돌려보거나, 콘솔 앱을 세션0에서 돌려보면 확실할 것 같은데, 혹시 제가 추가적으로 참고할만한 아티클이 있을까요?! 늘 도움 감사드립니다.
[guest]
2022-08-22 04시00분
[승준] 서비스에서 모든걸 해야 하는 어떤 조건이 있나요?
저는 서비스는 왓치독 역할만 시키고 기능 구현은 모두 외부 프로그램으로 만들어서 처리하거든요.
[guest]
2022-08-22 04시22분
[에릭] 승준님 의견 감사합니다.

아 저는 서버에서 돌아갈 윈도우 서비스를 구현하는 중이어서 되도록이면 외부에 프로그램을 따로 두지 않고, 서비스로만 처리 하려고 진행 했습니다.
저 모듈 외 다른 모듈도 많은 상태라서용 ^^;;

세션을 변경 시키지 못하면 workaround로 powershell process를 서비스에서 돌려서 wmi 쿼리값 확인해보려고 합니다
[guest]
2022-08-22 04시39분
"네트워크 드라이브를 연결한 데스크톱 사용자와 NT 서비스가 실행되는 계정이 같나요?" 질문에 먼저 답변해 주세요.
정성태
2022-08-22 05시19분
[에릭] 작가님,

NT 서비스의 속성 중 로그온 탭에서 확인 되는 값을 물으신거면, "로컬 시스템 계정" 으로 되어 있습니다. 그럼 현재 제 PC(네트워크가 연결 된)의 계정과 서비스의 실행계정이 같다고 볼 수 있을까요?!

네트워크 드라이브(서버)의 계정과 제 개인PC의 계정은 다릅니다.
[guest]
2022-08-22 06시11분
그 "로컬 시스템 계정"을 네트워크 드라이브를 연결한 로그인 계정으로 맞춰 주세요. 그게 가장 쉬운 해결책입니다.
정성태

... 61  62  63  64  65  66  [67]  68  69  70  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
916임동찬10/15/201017275file lock 관련 [2]
915오병태10/11/201016067바쁘신대 답변 감사드립니다. [1]
914오병태10/11/201016278감사드립니다. 염치없지만 또 한번 문의드립니다. [2]
912오병태10/11/201016474윈도우즈 인증서 관련해서 문의를 드립니다.
913정성태10/11/201020485    답변글 [답변]: 윈도우즈 인증서 관련해서 문의를 드립니다.
911나그네.10/6/201018932안녕하세요.. openssl 관련하여...혹시.. [2]
910윤용한9/17/201018518Visual Studio 2010으로 만든 Setup 파일을 Win2000 SP4에 설치 되게 할 수 없나요? [1]
908김재영9/7/201016642솔루션에 구성된 프로젝트의 버젼만 통합할려면 어떤 방법이 있습니까?
909정성태9/7/201018078    답변글 [답변]: 솔루션에 구성된 프로젝트의 버전만 통합할려면 어떤 방법이 있습니까? [1]
906임동찬8/19/201017855디버깅 중 이해할 수 없는 상황이 [1]
904김영태8/18/201019601C# Interop 관련 질문입니다. [1]
905김영태8/19/201021429    답변글 [답변]: C# Interop 관련 질문입니다. [4]
903임동찬8/17/201016448COM 객체의 타입 변경 [1]
902임동찬8/16/201016528DISPPARAMS 관련 질문 [4]
901노력자8/11/201020349.net 2008 c# 에서 만든 com+ 는 com탭에서 사용불가..?! [3]파일 다운로드1
900박정환8/9/201018824wsHttpBinding을 WS-Addressing 없이 세팅할 수는 없을 까요? [7]
899임동찬7/30/201018999WCF heartbeat 관련 질문 [3]
898이영기7/29/201016934.NET 웹용에서 함수호출에러 [1]
897임동찬7/16/201018605Visual Studio 2008에서 DB연결 관련 문제 [1]
894최종문7/14/201016963try/finally 에 관해서 문의 드립니다.
895정성태7/15/201016684    답변글 [답변]: try/finally 에 관해서 문의 드립니다.
896최종문7/15/201017988        답변글 [답변]: [답변]: try/finally 에 관해서 문의 드립니다. [1]
893이병준 donator7/7/201019480Visual Studio 2010 에서의 Build 관련 질문 [1]
889임동찬7/6/201017230아래 887번에 대한 추가 질문
890정성태7/6/201018339    답변글 [답변]: 아래 887번에 대한 추가 질문
891임동찬7/6/201018208        답변글 [추가]: [답변]: 아래 887번에 대한 추가 질문
... 61  62  63  64  65  66  [67]  68  69  70  71  72  73  74  75  ...