|
![]() |
|
NicoDE
(Gast)
n/a Beiträge |
#1
![]() Ich weis aber nicht ob das die beste Variante ist, ich muss erst noch testen, ob eine Fehlermeldung erzeugt wird, die vermieden werden sollte.
Delphi-Quellcode:
ps: Deklarationen aus WbemCli.pas reinkopiert.
////////////////////////////////////////////////////////////////////////////////
// // Excerpt from WbemCli.pas // type TCimType = LongInt; const CIM_EMPTY = TCimType(0); CIM_SINT16 = TCimType(2); CIM_SINT32 = TCimType(3); CIM_REAL32 = TCimType(4); CIM_REAL64 = TCimType(5); CIM_STRING = TCimType(8); CIM_BOOLEAN = TCimType(11); CIM_OBJECT = TCimType(13); CIM_SINT8 = TCimType(16); CIM_UINT8 = TCimType(17); CIM_UINT16 = TCimType(18); CIM_UINT32 = TCimType(19); CIM_SINT64 = TCimType(20); CIM_UINT64 = TCimType(21); CIM_DATETIME = TCimType(101); CIM_REFERENCE = TCimType(102); CIM_CHAR16 = TCimType(103); CIM_ILLEGAL = TCimType($0FFF); CIM_FLAG_ARRAY = TCimType($2000); type IWbemContext = interface(IUnknown) ['{44ACA674-E8FC-11D0-A07C-00C04FB68820}'] function Clone(out ppNewCopy: IWbemContext): HRESULT; stdcall; function GetNames(lFlags: LongInt; out pNames: TSafeArray ): HRESULT; stdcall; function BeginEnumeration(lFlags: LongInt): HRESULT; stdcall; function Next(lFlags: LongInt; out pstrName: WideString; out pValue: OleVariant): HRESULT; stdcall; function EndEnumeration(): HRESULT; stdcall; function SetValue(wszName: LPCWSTR; lFlags: LongInt; const pValue: OleVariant): HRESULT; stdcall; function GetValue(wszName: LPCWSTR; lFlags: LongInt; out pValue: OleVariant ): HRESULT; stdcall; function DeleteValue(wszName: LPCWSTR; lFlags: LongInt): HRESULT; stdcall; function DeleteAll(): HRESULT; stdcall; end; type IWbemQualifierSet = interface(IUnknown) ['{DC12A680-737F-11CF-884D-00AA004B2E24}'] function Get(wszName: LPCWSTR; lFlags: LongInt; out pVal: OleVariant; out plFlavor: LongInt): HRESULT; stdcall; function Put(wszName: LPCWSTR; const pVal: OleVariant; lFlavor: LongInt ): HRESULT; stdcall; function Delete(wszName: LPCWSTR): HRESULT; stdcall; function GetNames(lFlags: LongInt; out pNames: TSafeArray ): HRESULT; stdcall; function BeginEnumeration(lFlags: LongInt): HRESULT; stdcall; function Next(lFlags: LongInt; out pstrName: WideString; out pVal: OleVariant; out plFlavor: LongInt): HRESULT; stdcall; function EndEnumeration(): HRESULT; stdcall; end; type IWbemClassObject = interface(IUnknown) ['{DC12A681-737F-11CF-884D-00AA004B2E24}'] function GetQualifierSet(out ppQualSet: IWbemQualifierSet ): HRESULT; stdcall; function Get(wszName: LPCWSTR; lFlags: LongInt; out pVal: OleVariant; out pType: TCimType; out plFlavor: LongInt): HRESULT; stdcall; function Put(wszName: LPCWSTR; lFlags: LongInt; const pVal: OleVariant; Type_: TCimType): HRESULT; stdcall; function Delete(wszName: LPCWSTR): HRESULT; stdcall; function GetNames(wszQualifierName: LPCWSTR; lFlags: LongInt; const pQualifierVal: OleVariant; out pNames: TSafeArray ): HRESULT; stdcall; function BeginEnumeration(lEnumFlags: LongInt): HRESULT; stdcall; function Next(lFlags: LongInt; out strName: WideString; out pVal: OleVariant; out pType: TCimType; out plFlavor: LongInt ): HRESULT; stdcall; function EndEnumeration(): HRESULT; stdcall; function GetPropertyQualifierSet(wszProperty: LPCWSTR; out ppQualSet: IWbemQualifierSet): HRESULT; stdcall; function Clone(out ppCopy: IWbemClassObject): HRESULT; stdcall; function GetObjectText(lFlags: LongInt; out pstrObjectText: WideString ): HRESULT; stdcall; function SpawnDerivedClass(lFlags: LongInt; out ppNewClass: IWbemClassObject ): HRESULT; stdcall; function SpawnInstance(lFlags: LongInt; out ppNewInstance: IWbemClassObject ): HRESULT; stdcall; function CompareTo(lFlags: LongInt; pCompareTo: IWbemClassObject ): HRESULT; stdcall; function GetPropertyOrigin(wszName: LPCWSTR; out pstrClassName: WideString ): HRESULT; stdcall; function InheritsFrom(strAncestor: LPCWSTR): HRESULT; stdcall; function GetMethod(wszName: LPCWSTR; lFlags: LongInt; out ppInSignature: IWbemClassObject; out ppOutSignature: IWbemClassObject ): HRESULT; stdcall; function PutMethod(wszName: LPCWSTR; lFlags: LongInt; pInSignature: IWbemClassObject; pOutSignature: IWbemClassObject ): HRESULT; stdcall; function DeleteMethod(wszName: LPCWSTR): HRESULT; stdcall; function BeginMethodEnumeration(lEnumFlags: LongInt): HRESULT; stdcall; function NextMethod(lFlags: LongInt; out pstrName: WideString; out ppInSignature, ppOutSignature: IWbemClassObject): HRESULT; stdcall; function EndMethodEnumeration(): HRESULT; stdcall; function GetMethodQualifierSet(wszMethod: LPCWSTR; out ppQualSet: IWbemQualifierSet): HRESULT; stdcall; function GetMethodOrigin(wszMethodName: LPCWSTR; out pstrClassName: WideString): HRESULT; stdcall; end; type IWbemObjectSink = interface(IUnknown) ['{7C857801-7381-11CF-884D-00AA004B2E24}'] function Indicate(lObjectCount: LongInt; const apObjArray: IWbemClassObject ): HRESULT; stdcall; function SetStatus(lFlags: LongInt; hResult: HRESULT; strParam: WideString; pObjParam: IWbemClassObject): HRESULT; stdcall; end; type IEnumWbemClassObject = interface(IUnknown) ['{027947E1-D731-11CE-A357-000000000001}'] function Reset(): HRESULT; stdcall; function Next(lTimeout: LongInt; uCount: LongWord; out apObjects: IWbemClassObject; out puReturned: LongWord ): HRESULT; stdcall; function NextAsync(uCount: LongWord; pSink: IWbemObjectSink ): HRESULT; stdcall; function Clone(out ppEnum: IEnumWbemClassObject): HRESULT; stdcall; function Skip(lTimeout: LongInt; nCount: LongWord): HRESULT; stdcall; end; type IWbemServices = interface; // forward IWbemCallResult = interface(IUnknown) ['{44ACA675-E8FC-11D0-A07C-00C04FB68820}'] function GetResultObject(lTimeout: LongInt; out ppResultObject: IWbemClassObject): HRESULT; stdcall; function GetResultString(lTimeout: LongInt; out pstrResultString: WideString): HRESULT; stdcall; function GetResultServices(lTimeout: LongInt; out ppServices: IWbemServices ): HRESULT; stdcall; function GetCallStatus(lTimeout: LongInt; out plStatus: LongInt ): HRESULT; stdcall; end; IWbemServices = interface(IUnknown) ['{9556DC99-828C-11CF-A37E-00AA003240C7}'] function OpenNamespace(const strNamespace: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppWorkingNamespace: IWbemServices; out ppResult: IWbemCallResult): HRESULT; stdcall; function CancelAsyncCall(pSink: IWbemObjectSink): HRESULT; stdcall; function QueryObjectSink(lFlags: LongInt; out ppResponseHandler: IWbemObjectSink): HRESULT; stdcall; function GetObject(const strObjectPath: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppObject: IWbemClassObject; out ppCallResult: IWbemCallResult): HRESULT; stdcall; function GetObjectAsync(const strObjectPath: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink): HRESULT; stdcall; function PutClass(pObject: IWbemClassObject; lFlags: LongInt; pCtx: IWbemContext; out ppCallResult: IWbemCallResult): HRESULT; stdcall; function PutClassAsync(pObject: IWbemClassObject; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink): HRESULT; stdcall; function DeleteClass(const strClass: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppCallResult: IWbemCallResult): HRESULT; stdcall; function DeleteClassAsync(const strClass: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink): HRESULT; stdcall; function CreateClassEnum(const strSuperclass: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppEnum: IEnumWbemClassObject): HRESULT; stdcall; function CreateClassEnumAsync(const strSuperclass: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink ): HRESULT; stdcall; function PutInstance(pInst: IWbemClassObject; lFlags: LongInt; pCtx: IWbemContext; out ppCallResult: IWbemCallResult): HRESULT; stdcall; function PutInstanceAsync(pInst: IWbemClassObject; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink): HRESULT; stdcall; function DeleteInstance(const strObjectPath: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppCallResult: IWbemCallResult): HRESULT; stdcall; function DeleteInstanceAsync(const strObjectPath: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink ): HRESULT; stdcall; function CreateInstanceEnum(const strFilter: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppEnum: IEnumWbemClassObject): HRESULT; stdcall; function CreateInstanceEnumAsync(const strFilter: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink ): HRESULT; stdcall; function ExecQuery(const strQueryLanguage: WideString; const strQuery: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppEnum: IEnumWbemClassObject): HRESULT; stdcall; function ExecQueryAsync(const strQueryLanguage, strQuery: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink ): HRESULT; stdcall; function ExecNotificationQuery(const strQueryLanguage, strQuery: WideString; lFlags: LongInt; pCtx: IWbemContext; out ppEnum: IEnumWbemClassObject ): HRESULT; stdcall; function ExecNotificationQueryAsync(const strQueryLanguage, strQuery: WideString; lFlags: LongInt; pCtx: IWbemContext; pResponseHandler: IWbemObjectSink): HRESULT; stdcall; function ExecMethod(const strObjectPath, strMethodName: WideString; lFlags: LongInt; pCtx: IWbemContext; pInParams: IWbemClassObject; out ppOutParams: IWbemClassObject; out ppCallResult: IWbemCallResult ): HRESULT; stdcall; function ExecMethodAsync(const strObjectPath, strMethodName: WideString; lFlags: LongInt; pCtx: IWbemContext; pInParams: IWbemClassObject; pResponseHandler: IWbemObjectSink): HRESULT; stdcall; end; type IWbemLocator = interface(IUnknown) ['{DC12A687-737F-11CF-884D-00AA004B2E24}'] function ConnectServer(const strNetworkResource, strUser, strPassword, strLocale: WideString; lSecurityFlags: LongInt; const strAuthority: WideString; pCtx: IWbemContext; out ppNamespace: IWbemServices): HRESULT; stdcall; end; const IID_IWbemLocator = IWbemLocator; CLSID_IWbemLocator: TCLSID = '{4590F811-1D3A-11D0-891F-00AA004B2E24}'; // //////////////////////////////////////////////////////////////////////////////// function IsWmiAvailable(const AResource: WideString = 'root\default'): Boolean; var Locator: IWbemLocator; Resource: WideString; Services: IWbemServices; begin Result := False; CoInitialize(nil); try if Succeeded(CoCreateInstance(CLSID_IWbemLocator, nil, CLSCTX_INPROC_SERVER, IID_IWbemLocator, Locator)) and Assigned(Locator) then try //NOTE: [NicoDE] Don't pass a WideString constant directly here. // Even if "strNetworkResource" is defined as "const BSTR", the // WBEM implementation might raise an exception if you pass the // default parameter directly to the ConnectServer() function. // Happend on Windows Vista x64 (RTM) with '\\.\root\default'. Resource := AResource; UniqueString(Resource); if Succeeded(Locator.ConnectServer(Resource, '', '', '', 0, '', nil, Services)) and Assigned(Services) then try Result := True; finally Services := nil; end; finally Locator := nil; end; finally CoUninitialize(); end; end; |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |