Пришел к выводу, что служба удаленного реестра не была включена или включена для удаленного компьютера. Вместо того, чтобы включить его, который открыл бы другую дверь в компьютер для любых злоумышленников, я использую следующий код:
PowerShell ps = PowerShell.Create()
.AddCommand("Invoke-Command")
.AddParameter("ComputerName", SearcherClass.CurrentComputer)
.AddParameter("Scriptblock", ScriptBlock.Create("Get-Tpm | Select-Object -ExpandProperty TPMPresent"));
Это запускает новый экземпляр PowerShell и запускает Invoke-Command
, чтобы в итоге выполнить команду Get-Tpm
, которая в конечном итоге возвращает свойство TPMPresent
Это фактический блок кода, который я использовал для оценки и возврата пригодного для использования результата в мою форму:
public static string GetTPM()
{
string output = "N/A";
try
{
PowerShell ps = PowerShell.Create()
.AddCommand("Invoke-Command")
.AddParameter("ComputerName", SearcherClass.CurrentComputer)
.AddParameter("Scriptblock", ScriptBlock.Create("Get-Tpm | Select-Object -ExpandProperty TPMPresent"));
foreach(PSObject i in ps.Invoke())
{
output = i.BaseObject.ToString();
}
if (output == "True")
{
output = "Present";
}
else
{
output = "None";
}
return output;
}
catch
{
return "Failed";
}
}