|
|
@ -36,18 +36,84 @@ namespace hass_workstation_service.Domain.Sensors
|
|
|
|
[SupportedOSPlatform("windows")]
|
|
|
|
[SupportedOSPlatform("windows")]
|
|
|
|
private bool IsMicrophoneInUse()
|
|
|
|
private bool IsMicrophoneInUse()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone\NonPackaged"))
|
|
|
|
using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone"))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
foreach (var subKeyName in key.GetSubKeyNames())
|
|
|
|
foreach (var subKeyName in key.GetSubKeyNames())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
using (var subKey = key.OpenSubKey(subKeyName))
|
|
|
|
// NonPackaged has multiple subkeys
|
|
|
|
|
|
|
|
if (subKeyName == "NonPackaged")
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (subKey.GetValueNames().Contains("LastUsedTimeStop"))
|
|
|
|
using (var nonpackagedkey = key.OpenSubKey(subKeyName))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1;
|
|
|
|
foreach (var nonpackagedSubKeyName in nonpackagedkey.GetSubKeyNames())
|
|
|
|
if (endTime <= 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
using (var subKey = nonpackagedkey.OpenSubKey(nonpackagedSubKeyName))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (subKey.GetValueNames().Contains("LastUsedTimeStop"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1;
|
|
|
|
|
|
|
|
if (endTime <= 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using (var subKey = key.OpenSubKey(subKeyName))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (subKey.GetValueNames().Contains("LastUsedTimeStop"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1;
|
|
|
|
|
|
|
|
if (endTime <= 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using (var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
foreach (var subKeyName in key.GetSubKeyNames())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// NonPackaged has multiple subkeys
|
|
|
|
|
|
|
|
if (subKeyName == "NonPackaged")
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using (var nonpackagedkey = key.OpenSubKey(subKeyName))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
foreach (var nonpackagedSubKeyName in nonpackagedkey.GetSubKeyNames())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using (var subKey = nonpackagedkey.OpenSubKey(nonpackagedSubKeyName))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (subKey.GetValueNames().Contains("LastUsedTimeStop"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1;
|
|
|
|
|
|
|
|
if (endTime <= 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using (var subKey = key.OpenSubKey(subKeyName))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (subKey.GetValueNames().Contains("LastUsedTimeStop"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1;
|
|
|
|
|
|
|
|
if (endTime <= 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|