Office Lizenzstatus auslesen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von debus.
-
-
Ich habe hier einen Ansatz, wie du mit Managementscope an die Daten gelangst.
Ist C#, musst du halt übersetzen.
Relevant ist die SelectQuery.
C#-Quellcode
- public static bool IsOfficeActivated()
- {
- System.Management.ManagementScope scope = new ManagementScope(@"\\" + System.Environment.MachineName + @"\root\cimv2");
- scope.Connect();
- SelectQuery searchQuery = new SelectQuery("SELECT LicenseStatus FROM SoftwareLicensingProduct WHERE ApplicationID = '0ff1ce15-a989-479d-af46-f275c6370663' and LicenseStatus = 1");
- ManagementObjectSearcher searcherObj = new ManagementObjectSearcher(scope, searchQuery);
- using (ManagementObjectCollection obj = searcherObj.Get())
- {
- return (obj.Count > 0);
- }
- }
--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
Hey,
habe das mal versucht zu übersetzen, komme da aber an meine Grenzen
VB.NET-Quellcode
- Public Shared Function IsOfficeActivated() As Boolean
- Dim scope As System.Management.ManagementScope = New ManagementScope(("\\" _
- + (System.Environment.MachineName + "\root\cimv2")))
- scope.Connect
- Dim searchQuery As SelectQuery = New SelectQuery("SELECT LicenseStatus FROM SoftwareLicensingProduct WHERE ApplicationID = '0ff1ce15-a989-479d-af46-f27"& _
- "5c6370663' and LicenseStatus = 1")
- Dim searcherObj As ManagementObjectSearcher = New ManagementObjectSearcher(scope, searchQuery)
- Dim obj As ManagementObjectCollection = searcherObj.Get
- Return (obj.Count > 0)
- End Function
Was müsste ich hier noch ändern?
Danke
Holger -
-
xored schrieb:
Imports System.Management
@debus: Du musst in den Verweisen eine Referenz auf die System.Management.dll hinzufügen--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
Wird bei mir automatisch hinzugefügt, sobald das Import drin ist:
-
Hallo und Danke an Euch beide.
Das mit dem Imports hatte ich schon, aber - sorry - vergessen im Code mit zu zeigen. Aber der Verweis hat noch gefehlt.
Also den Status bekomme ich nun angezeigt, aber kann man auch noch die Tage auslesen, wie lange die Lizenz noch läuft?
Ich meine den Eintrag Remaining Grace (siehe HC).
Danke
Holger -
-
Hey, Sorry wenn ich nochmal nachfrage aber ich krieg es nicht hin
Mein Versuch sieht so aus, aber es kommt nix zurück bzw es kommt zu einem Fehler beim Return (siehe HC)
VB.NET-Quellcode
- Public Shared Function OfficePeriod() As Boolean
- Dim scope As System.Management.ManagementScope = New ManagementScope(("\\" _
- + (System.Environment.MachineName + "\root\cimv2")))
- scope.Connect()
- Dim searchQuery As SelectQuery = New SelectQuery("SELECT GracePeriodRemaining FROM SoftwareLicensingProduct WHERE ApplicationID = '0ff1ce15-a989-479d-af46-f27" & _
- "5c6370663'")
- Dim searcherObj As ManagementObjectSearcher = New ManagementObjectSearcher(scope, searchQuery)
- Dim obj As ManagementObjectCollection = searcherObj.Get
- Return (obj.Count)
- End Function
Danke
Holger -
--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
Hey, wenn ich das so mache, wird mir alles immer leer angezeigt
VB.NET-Quellcode
- Public Shared Function IsOfficeActivated() As Boolean
- Dim scope As System.Management.ManagementScope = New ManagementScope(("\\" _
- + (System.Environment.MachineName + "\root\cimv2")))
- scope.Connect()
- Dim searchQuery As SelectQuery = New SelectQuery("SELECT LicenseStatus FROM SoftwareLicensingProduct WHERE ApplicationID = '0ff1ce15-a989-479d-af46-f27" & _
- "5c6370663' and LicenseStatus = 1")
- Dim searcherObj As ManagementObjectSearcher = New ManagementObjectSearcher(scope, searchQuery)
- Dim obj As ManagementObjectCollection = searcherObj.Get
- For Each mo As ManagementObject In obj
- MsgBox(mo.ToString)
- Next
- Return (obj.Count > 0)
- End Function
Was mache ich hier falsch?
Holger -
debus schrieb:
MsgBox(mo.ToString)
Schau dir die Objekte im Debugger an.--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
-
Mit viel Glück finde ich am Wochenende vielleicht Zeit, das alte Projekt rauszukramen.
Ansonsten musst du einfach mal googeln.
Den technischen Ansatz hast du ja.
Hier hatte einer dasselbe Problem, in dem Fall mit Vista, aber das macht programmtechnisch keinen Unterschied.--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
-
Hey, ich habe es wie folgt gelöst. Danke Euch allen
Es ist bestimmt nicht ganz sauber und vielleicht kann man das Obj ja auch direkt ansprechen? Aber so geht es halbwegs.
Hier der Code
VB.NET-Quellcode
- Dim scope As System.Management.ManagementScope = New ManagementScope(("\\" _
- + (System.Environment.MachineName + "\root\cimv2")))
- scope.Connect()
- Dim searchQuery As SelectQuery = New SelectQuery("SELECT GracePeriodRemaining FROM SoftwareLicensingProduct WHERE ApplicationID = '0ff1ce15-a989-479d-af46-f27" & _
- "5c6370663'")
- Dim searcherObj As ManagementObjectSearcher = New ManagementObjectSearcher(scope, searchQuery)
- Dim obj As ManagementObjectCollection = searcherObj.Get
- For Each mo As ManagementObject In obj
- Dim days = mo.GetPropertyValue("GracePeriodRemaining")
- If days > 0 Then
- tage = (days / 60) / 24
- End If
- Next
Vielleicht kann man das noch eleganter machen :))
Danke
HolgerDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „debus“ ()
-
-
Also da gibt es die SoftwareLicensingProduct class
Da werden die Properties aufgelistet.
Oder du machst eineSELECT *
-Abfrage und listest die gefunden Properties auf.
-
-
Tags
-
Ähnliche Themen
-
DarkDeviLw - - Internet- und Netzwerkprogrammierung
-
FinnSoft - - Sonstige Problemstellungen