Как запустить командную строку deepfreeze с помощью командной строки в С#
Я работаю со службами, используя C#, и для некоторых вещей мне нужно получить состояние глубокой заморозки станции (замороженной или размороженной), для этого я нашел это в документации Faronic , когда я использую следующую команду в командной строке:
C:\WINDOWS\syswow64\DFC.exe get /ISFROZEN
он работает и возвращает "ОТТАЯЛ". или "ЗАМОРОЖЕНО". поэтому я решил в своей программе на С# запустить командную строку и перенаправить стандартный вывод, чтобы получить результат команды в строковую переменную, но это не сработало, я пробовал с любыми другими командами, и это работает, я не понимаю, где это проблема. есть ссылка для загрузки DFC.exe , если она не существует (заполните капчу и нажмите, чтобы загрузить). Это мой третий день, поэтому мне нужна помощь .. спасибо всем, есть пример кода:
string pathDf = @"C:\WINDOWS\syswow64\DFC.exe";
string cmdline = string.Format("{0} get /ISFROZEN ", pathDf);
string msg = "";
if (File.Exists(pathDf))
{
Process cmd = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
startInfo.CreateNoWindow = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
cmd.StartInfo = startInfo;
cmd.Start();
cmd.StandardInput.WriteLine(cmdline);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
Console.ReadKey();
}
2 ответа
команда все еще не работает ... но я нашел другой способ получить состояние глубокой заморозки, используя раздел реестра
private static string GetDeepFreezeState()
{
string result = "";
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Faronics\Deep Freeze 6");
if (key != null)
{
Object o = key.GetValue("DF Status");
if (o != null)
{
result = o.ToString();
}
}
}
catch (Exception ex)
{
//react appropriately
FilesUtilities.WriteLog(ex.Message,FilesUtilities.ErrorType.Error);
}
return result;
}
Может быть, это поможет кому-то. С другой стороны, я до сих пор не могу запустить командную строку deepfreeze в своей программе на C#, если у кого-то есть ответ, пожалуйста, помогите...
Другой способ получить состояние Deepfreeze с помощью ключа реестра
$path = 'HKLM:\SOFTWARE\WOW6432Node\Faronics\Deep Freeze 6'
$Key = 'DF Status'
$State = Get-ItemPropertyValue -path $path -name $Key -ErrorAction SilentlyContinue
if ($State='Frozen') {Echo "Deepfreeze is currently Frozen"} else {Echo "Deepfreeze is currently UN-Frozen"}
pause