Hallo.
Vielen Dank schon mal für eure Hilfe!
Es handelt sich dabei um ein MFCOM Object. Das ist die COM Schnittstelle von Citrix Metaframe.
Ein Addon für die Terminalserver Funktion von Microsoft.
Die Doku dazu hat so ca 920 seiten.. das will ich jetzt niemandem antun.. Aber hier mal die relevanten Auszüge daraus...
Ein Beispiel in VB:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| <package>
<job id="AddAdmins">
<reference object="MetaFrameCOM.MetaFrameFarm"/>
<script language="VBScript"> Dim NewAdmin, theFarm, theServer
' ' Create the farm object. ' Set theFarm = CreateObject("MetaFrameCOM.MetaFrameFarm") ' ' Initialize the farm object. theFarm.Initialize MetaFrameWinFarmObject
' Add the new admins for each server in the farm. |
Quelltext
1: 2:
| // Das hier ist die Stelle, die ich in Delphi irgendwie nicht hinbekomme. For each theServer in theFarm.Servers |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| Set NewAdmin = theFarm.AddAdmin NewAdmin.AdminType = MFAdminPermissionFullAccess NewAdmin.Enable = 1 NewAdmin.AAType = MFAccountAuthorityNTDomain NewAdmin.AAName = theServer.ServerName NewAdmin.AccountType = MFAccountLocalGroup NewAdmin.AccountName = "Administrators" NewAdmin.SaveData
if Err.Number <> 0 Then WScript.Echo "Can't save Admin object" WScript.Echo "(" & Err.Number & ") " & Err.Description WScript.Echo "" WScript.Quit Err.Number End if Next
</script>
</job>
</package> |
Set theFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")
theFarm.Initialize MetaFrameWinFarmObject
// Nach dem Einbinden der entsprechenden TypBibliothek in Delphi kann man das entsprechend nachbauen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure test; var thfarm:OLEVariant; begin try thefarm := createoleobject('MetaframeCOM.MetaframeFarm'); thefarm.initialize(MetaframeWinFarmObject); showmessage(thefarm.farmname); |
So, es gibt jetzt: theFarm.servers (wie im VB Beispiel oben) Was ein "Enumerator object auf Metaframeservers darstellt. Das könnte man auch direkt verwenden:
Delphi-Quelltext
1: 2:
| theserver:= createoleobject('MetaframeCOM.MetaframeServer'); theserver.initialize(MetaframeWinFarmObject,'Testserver'); |
Aber ich muss es über das Farm Object ansprechen, da ich mit allen Servern (die Anzahl und Namen weis ich vorher nicht) etwas machen möchte.
Die Beschreibung zu den Objekten hierzu:
"TheFarm."Servers
Return an enumerator object that supports the IMetaFrameServers interface. Use
this object to enumerate the MetaFrameServer objects.
C++ Syntax
Public: HRESULT get_Servers(IMetaFrameServers** pServers);
where pServers The address of a variable that will receive the pointer to the server
collection object.
Visual Basic Syntax
Public Property Servers As IMetaFrameServers
C# Syntax
public IMetaFrameServers Servers {get;}
Remarks
This call returns an enumerator object that can be used to enumerate all the servers
in the farm regardless of the hierarchy as displayed in the Management Console for
servers.
The collection returned by this method contains all the servers in the farm,
regardless of the folder hierarchy for the servers.
Wäre super, wenn ihr mir da helfen könntet.
Falls es sich jemand antuen möchte, hier der Link zu der MFCOM Referenz:
support.citrix.com/s...er_SDK_MFCOM_2_3.pdf
Viele Grüße
Alex