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

1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5802모바일앱1/22/20232921XAMARINE vs Android Studio [7]
5801블루투스1/19/20233670WPF 은행지폐계수기 개조 후 결과값 서버 전송 [2]파일 다운로드1
5800김민아1/19/20233980안녕하세요 가비지 컬렉터 동작 원리 중 궁금한점이 있습니다 [5]
5799guest1/19/20233141C# 공유폴더 내 Acess 디비 공유 [2]
5798kss1/19/20232932책 오탈인가요? [1]
5797이거비버1/19/20233018C# 공부 이후 MS 프레임워크.. 어느것을 공부해야할까요? 너무 많아서 정신이 없네요 [5]
5796guest1/19/20232745해킹 test [3]
5795동기1/18/20232587동기 스레드와 메서드와 While [2]
5794박규동1/18/20232559.net publish 할때마다 runtimeconfig 값이 바뀌는 현상 [1]
5793후후훗1/18/20232720.NET Core 에서 사용중인 함수 후킹 방법 [2]
5792Will...1/18/20232663소스코드 Log Write 기능을 리스트업 질문 [9]
5791PLC1/16/20233357C# - 실시간 5개 룸 모니터링 [15]
5790집으로 ...1/13/20233010[UI 멈춤 현상]deadlock 관련 글을 보고 혹시나 하고 문의 드립니다. [4]
5789guest1/10/20232903스레드와 Async Task [2]파일 다운로드1
5788kr11/10/20233347C# 에서 제공하는 컬렉션들의 차이점이 궁금합니다. [3]
5787stack1/10/20233137STACKOVERFLOW [1]
5786Dev ...1/9/20234004익명 클래스 말고 익명 구조체는 불가능한걸까요? [4]
5785음성인식1/8/20233602음성인식 System.Speech - 문법에 사용된 언어가 음성 인식기의 언어와 일치하지 않습니다. [2]
5784MS워드1/8/20233203MS워드에서 ctrl Z는 클립보드를 이용하나요? 아니면 참조자 이용하나요? [7]
5783구직자1/7/20233266C#개발자 구인광고와 초급개발자 [3]파일 다운로드1
5782Sqli...1/5/20233207윈도우11 노트북에서 exe(Sqlite)만들어 윈도우 7 PC에 설치 시 [5]
5781List맨1/5/20233743List.Add("newobj") 속도는 빠른 편인지요? [11]
5780임세1/3/20234349C# 프로그래밍 10 책 구매한 사람입니다. 3부 자료는 어디서 다운 받을 수 있나요? [4]
5779이건우1/2/20233213안녕하십니까 루프안에서 메세지처리에 관하여 질문드립니다! [2]
5778이건우12/30/20224474안녕하세요 c#에서 dll참조 관련 질문드립니다. [4]
5777감사합니...12/29/20223489UI Thread에 Invoke 처리관련 궁금합니다. [3]
1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...