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

... 46  47  48  49  50  [51]  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1556김응규4/22/201512527    답변글 [답변]: WCF net.tcp 관련해서 질문 드립니다. [1]파일 다운로드1
1554(삭제)4/19/201513286안드로이드 에뮬레이터에서 특정 앱 구동불가할때! [2]
1552spow...4/18/201519168마이크로세컨드 단위의 Sleep이 필요한데 찾질 못하겠습니다. [5]
1553spow...4/18/201512486    답변글 [답변]: 마이크로세컨드 단위의 Sleep이 필요한데 찾질 못하겠습니다. [1]
1551인디언기...4/16/201511852iisnode에 대해서 글 올리셨던데 질문이 있습니다 [1]
1549김선아4/15/201512323.net framework 4.5와 c++ dll에 관한 질문입니다 [1]
1550김선아4/15/201510730    답변글 [답변]: .net framework 4.5와 c++ dll에 관한 질문입니다 [2]
1547문명식4/3/201512764IWebBrowser Key Event 관련 [2]
1545나종식3/25/201511738internet explorer dns cache flush [2]
1543이용원3/23/201511691hyper-v 질문드려요! [1]
1544이용원3/24/201510849    답변글 한가지만 더 여쭤볼게요! [1]
1541임기성3/20/201518067Microsoft.Office.Core dll관련 문제 [1]
1539펜플3/17/201511407asp.net 질문입니다. [1]
1540113/17/201511374    답변글 [답변]: asp.net 질문입니다. [1]
1538열공합시닷3/13/201512148중계서버 질문드립니다 [1]
1537김재영3/11/201513235asp.net의 빌드 유휴시간 이후의 리빌드 작업을 컨트롤 할 수 있습니까? [2]
1536솔솔3/9/201511683mac address얻으려고 하는데요.. [1]
1535Stud...3/4/201512259C#엔 MFC의 theApp 과 같은 기능을 하는것이 없나요? [3]
1534김동진3/4/201511683C#에서 BHO로 Windows Explorer에서의 동작이 가능할지요 [2]
1533김동현3/3/201512018컴파일 된 프로그램에 코드 삽입(?) 관련입니다. [1]
1532반가워요3/3/201514617C# 소켓연결에 packet송수신... [8]
1531강현수3/2/201513263C# com 등록 시 GUID 변경 관련 문의 [1]
1529김민규2/15/201513159C++ 64bit/32bit [3]파일 다운로드1
1528김개똥2/14/201510674좀 관련없는 질문이지만, 정말 답답하고 찾는데 명확한 해답 찾지못해 질문 올립니다. <Windows 사용자 인증> [1]
1527방문자1/27/201511690System Timer의 Tick에서 Backgroundworker를 호출하면 스레드 문제가 있을까요? [1]
1526황상대1/26/201513547C# 마샬링 관련 질문이 있습니다. [1]
... 46  47  48  49  50  [51]  52  53  54  55  56  57  58  59  60  ...