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분
그 "로컬 시스템 계정"을 네트워크 드라이브를 연결한 로그인 계정으로 맞춰 주세요. 그게 가장 쉬운 해결책입니다.
정성태

... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4801spow...2/3/201710363C#의 참조 동작관련하여 아이디어 문의 드립니다 [4]
4800오세운2/1/201714438C# 에서 C++ DLL임포트 질문입니다. [2]
4798guest1/29/201711761picturebox의 image.dispose [1]
4797김철환1/13/201711712책에 관한 질문입니다 [3]
4796Bere...1/13/201711822++ 후위연산자와 = 을 함께 사용할 때 생성되는 IL 코드 관련... [2]
4795김철환1/11/201712945이벤트 부분을 읽고 있는데 이해가 안되서 질문합니다.. [11]
4794김철환1/10/201710281안녕하세요 c# 6.0 책을 구매한 사람인데요 [3]
4793장준영1/7/201712341안녕하세요 c언어 처음 공부해보는 학생입니다 [4]파일 다운로드1
4792김재영1/4/201713315소스코드 공개 전 성태님의 의견을 듣고싶습니다 [3]
4791C#초보12/28/201613170비동기 소켓 close시 ObjectDisposedException 문제점 질문 있습니다.. [1]
4790미나리12/24/201613421파워포인트 쇼 제어 SimpleHttpServer.cs 작동문제 [4]파일 다운로드1
4789김솔지12/21/201612220프린트 시, 프린트하는 파일의 파일명 구하는 부분에 대해서 질문드립니다. [1]
4788짜두12/19/201611941Visual Studio 2015 에서 msbuild 12 사용 [5]
4787guest12/18/201613748VLC라이브러리에 대해 아시나요? [3]파일 다운로드1
4785Hyou...12/16/201613843WPF 개발 시 MVVM 프레임워크 사용 [2]
4784ds12/15/201610495문의 드립니다. [2]
4783후배12/13/201612096MemoryStream에 관한 질문 입니다. [5]
4782김형민12/6/201610407[ C# 6.0 ] 126p 오타인가요? [6]
4781질문자11/29/201610581ms워드 저장 오류 [1]
4780최진11/28/201615048안녕 하세요 빌드 관련해서 질문드립니다 꾸벅 [4]
4779손니11/28/201611402안녕하세요 질문하다 드려도 될까요 [3]
4778김상호11/25/201610914재귀호출->비재귀호출 [2]파일 다운로드1
4777권오영11/12/201613171아래 질문 상세 소스전체입니다.. [3]
4776권오영11/11/201611064제가 이클립스를 공부중인데..이상한것을 찾았습니다.. [2]
4775이성환11/11/201614475안녕하세요. SnapsToDevicePixels 질문입니다. [5]파일 다운로드1
4774popo11/10/201611095.net SSL통신 관련 질문 드립니다. [1]
... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...