2010-11-29 5 views
2

JScript (WSH)의 다음 코드를 사용하여 WMI : var registry = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv');을 사용하는 로컬 레지스트리에 연결하면 작동합니다.JScript에서 참조로 인수를 전달하는 out 인수로 함수 호출

그런 다음 실제로 삭제하지 않고 (예 : 비파괴 검사 수행) 키를 삭제할 수 있는지 결정해야합니다. 문서를 살펴본 결과 StdRegProv.CheckAccess() 메서드가 필요하다는 것을 알았습니다. 문제는 CheckAccess이 결과를 out 인수로 반환하고 JScript에서 VBScript의 ByRef을 찾을 수 없다는 것입니다.

인터넷에서 어딘가에 SWbemServices.ExecMethod을 사용하면 어떻게 든 도움이된다는 것을 알았지 만, 아직 어떻게 사용할 수 있는지 알지 못했습니다.

누구나 참조로 전달 된 인수로 함수 호출을 수행하는 JScript에서 코드 샘플을 제공 할 수 있습니까?

답변

2

허, 작동 해.

function CheckAccess(defKey, subkeyName, required) { 
    var providerName = "StdRegProv"; 
    var funcName = "CheckAccess"; 

    // connect to WMI 
    var services = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default"); 

    // get provider 
    var registry = services.Get(providerName); 

    var in_params = registry.Methods_(funcName).InParameters.SpawnInstance_(); 
    in_params.hDefKey = defKey; 
    in_params.sSubKeyName = subkeyName; 
    in_params.uRequired = required; 

    var outParams = services.ExecMethod(providerName, funcName, inParams); 

    return Boolean(outParams.bGranted); 
}; 
: 그것을해야합니다 사람들을위한

는 JScript의 CheckAccess invokation이 같이 보입니다

관련 문제