Как запустить командную строку 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
Другие вопросы по тегам