Click here to Skip to main content
Click here to Skip to main content

WMI Namespace Security with C/C++

By , 6 Sep 2012
 

Introduction

When I try to operate WMI namespace security, I find that there are several script solutions that depend on the APIs GetSecurityDescriptor and SetSecurityDescriptor . These two APIs are not available on Windows NT/2000/XP/2003.

And I found a C# solution at CodeProject, but it still depends on the .NET Framework, and cannot be used on a fresh XP environment.

So I decided to write a program to operate WMI Namespace Security with Windows Native APIs which are supported on Windows 2000/XP/2003/2008/7. Then I found there's lack of material about this topic, so I decided to write this article~~~

About the code

The code is easy to read and understand. It's a little tricky to invoke the methods of the system class of __SystemSecurity in the WMI namespace. We have to use GetMethod and ExecMethod to invoke the GetSD/SetSD APIs.

Here is the code sequence to invoke APIs in __SystemSecurity:

// Get system class of __SystemSecurity
hres = pSvc->GetObject(ClassPath, 0, NULL, &pClass, NULL);
// Get method GetSD
hres = pClass->GetMethod(methodGetSD, 0, &pGetSD_InClass, &pGetSD_OutClass);
// Execute method GetSD, to get original SD
hres = pSvc->ExecMethod(ClassPath, methodGetSD, 0, NULL, pGetSD_InClass, &pGetSD_OutInst, NULL);
hres = pGetSD_OutInst->Get(L"SD", 0, &varRes, NULL, 0);
 
...

And the usage of the program is takes reference from the C# sample, thanks to J_Madden.

C:\> WmiSecurity.exe -n ROOT\CIMv2 -u DOMAIN\My_Account -s REMOTEACCESS -r 

Currently I have only implemented the connector to the local machine, but a WMI remote connector is not a difficult task~~~

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

zoufeiyy
China China
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionNot able to download the codememberVishal D3 Sep '12 - 22:45 
GeneralMy vote of 1memberSledgeHammer0125 Apr '10 - 7:53 
GeneralRe: My vote of 1memberzoufeiyy25 Mar '12 - 2:48 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130516.1 | Last Updated 6 Sep 2012
Article Copyright 2010 by zoufeiyy
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid