이 wmic
쿼리( NODE
, USER
, PASS
모두 둔감함)...
wmic /NODE:10.00.00.1 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:domain\my_user /PASSWORD:myPass! /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON class StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
^&H80000002
uint32 변환입니다HKEY_LOCAL_MACHINE
...Windows CMD 프롬프트에서 완벽하게 작동합니다. 내 로컬 Windows 컴퓨터의 노드 패키지 컨텍스트에서도 성공적으로 실행할 수 있습니다. 이는 호출 wmic
이 특별히 로컬 컴퓨터(Windows)에 대해 이루어지고 문제 없이 처리되기 때문이라고 가정합니다. 나에게 필요한 것이 포함된 결과를 반환합니다...
res.sNames [ 'BB731A3DD8F089A6D4E59AF9D706...' ]
Alpine을 실행하는 Docker 컨테이너와 Express 애플리케이션을 호스팅하는 노드를 만들었습니다. 아래 지침에 따라 Linux에 WMIC를 설치했습니다.
https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
설치가 성공했습니다.
이제 Node 앱이나 직접 명령을 통해 Ubuntu의 bash 프롬프트에서 똑같은 쿼리를 실행하면 다음과 같은 결과가 나타납니다.
$ wmic.exe /NODE:10.00.00.1 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:domain\my_user /PASSWORD:myPass! /OUTPUT:STDOUT /APPEND:STDOUT / AGGREGATE:ON 클래스 StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
[1]426
bash: H80000002, Software\Microsoft\SystemCertificates\MY\Certificates: 해당 파일 또는 디렉터리가 없습니다.
$ 오류: 설명 = 액세스가 거부되었습니다.
wmic
이것이 Linux와 Windows의 문자열 형식 오류 때문인지, 아니면 Linux가 내 쿼리를 올바르게 구문 분석하지 않는 다른 변종을 실행하고 있는지 평생 알 수 없습니다 .
@AB의 제안을 시도한 후 캐럿/앰퍼샌드(^&)를 완전히 제거했는데 결과는 다음과 같습니다.
$ wmic /NODE:10.23.0.11 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:aim4gain\svc_certdisc /PASSWORD:finiTAryduRationmagicDialuP! /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON 클래스 StdRegProv CALL EnumKey H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
실수:
설명 = 접근이 거부되었습니다.
이는 두 운영 체제 모두에서 동일한 자격 증명을 사용하여 실행하는 것과 동일한 쿼리이지만 Windows에서는 인증 문제가 없습니다.
답변1
궁금해하시는 분이 계시다면 몇 시간 동안 테스트해 본 결과 오류 메시지가 매우 모호해졌습니다. Windows 스타일이 아닌 bash 스타일로 모든 것을 이스케이프하세요.
노트:
\$
바꾸다^&
- USER 값을 ''로 묶습니다.
- PASSWORD 값을 ''로 묶습니다.
여기를 참조하세요(@AB에게 감사드립니다):
https://manpages.debian.org/buster/bash/bash.1.en.html#QUOTING
$ wmic /NODE:10.23.0.11 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:'domain\my_user' /PASSWORD:'myPass!' /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON class StdRegProv CALL EnumKey \&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
Executing (StdRegProv)->EnumKey()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
ReturnValue = 0;
sNames = {"BB731A3DD8F089A6D4E59AF9D70601F9CBB94A9D"};
};