Ich konfiguriere einen lokalen Anwendungsbenutzer (Teil von BUILTIN \ Users) auf einem Windows 7-Kiosk. Der Kiosk verfügt über ein spezielles USB-Gerät, das an einem virtuellen COM-Anschluss ausgeführt wird. Der Benutzer benötigt die Berechtigung zum Lesen der WMI-Klasse MSSerial_PortName
im root\WMI
Namespace, um den COM-Port zu finden. In PowerShell (mit dem ich die Konfiguration überprüfe)
PS> Get-WmiObject -namespace 'root\WMI' -class 'MSSerial_PortName'
und durch regulären .NET-Code (so wird die Anwendung geschrieben)
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName");
Ich erhalte die Fehlermeldung "Zugriff verweigert", es sei denn, ich werde als Administrator oder Sitzung mit erhöhten Rechten ausgeführt. Ich habe viel von Q & A auf ähnliche Zugriffsprobleme, aber die meisten scheinen laufen als Administrator zu empfehlen. Dies ist keine Option für diesen Benutzer / Kiosk / Konfiguration. Derzeit kann ich den verwalteten Wrapper des Geräteherstellers nicht verwenden.
Ich habe in der Microsoft Management Console herumgespielt, das WMI-Steuerelement geladen und die Eigenschaften | geändert Sicherheit | Namespace: Root \ WMI. Ich habe festgelegt, dass die Benutzergruppe dieselben Berechtigungen wie die Administratorgruppe hat. Aber das hat nicht funktioniert (ich habe sowieso nur geraten).
Ich kann keine MSDN-Dokumentation für MSSerial_PortName
die MSSerial
"Basis" -Klasse oder andere verwandte Klassen im Namespace finden (wie in diesem Artikel vorgeschlagen ). Und ich weiß nichts anderes über WMI-Sicherheit.
Ich habe in PowerShell einen anderen Weg gefunden und es sind keine Administratorrechte erforderlich:
Leider erhalten Sie keinen Portnamen in COMx-Form, aber mit einer einfachen Textanalyse sollten Sie in der Lage sein, den Portnamen aus dem Gerätenamen zu extrahieren.
quelle