スキップしてメイン コンテンツへ

 none
C#でのBatteryreport収集について RRS feed

  • 質問

  • 下記環境で、バッテリレポートを簡単に取得できる機能をアプリの中に作成中です。
    下記コマンドを実行すると、【電源効率の診断ライブラリ (energy.dll) を読み込むことができませんでした。】
    とエラーになってしまいます。

    回避する方法について、ご教授頂けないでしょうか。

    【使用環境】
    ・Windows10 Pro Ver1909
    ・Visual Studio 2019

    【エラープログラム】

     var proc = new System.Diagnostics.Process();
     proc.StartInfo.FileName = @"C:\WINDOWS\system32\cmd.exe";

    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardInput = false;
    proc.StartInfo.Arguments = @"/A /C powercfg /batteryreport";
    proc.Start();
    string results = proc.StandardOutput.ReadToEnd();
    proc.WaitForExit();
    proc.Close();
    Console.WriteLine(results);

    【補足】
     コマンドプロンプトを起動し、『powercfg /batteryreport』と入力すると正しく取得できます。

    2020年1月15日 11:32

回答

  • hornet1119 さま よろしく。

    energy.dll で検索すると、OS CPU アーキテクチャに依存する様ですので、
    OS が x64 の場合、Project が 32 優先になっていると、エラーを吐く気がします。
    AnyCPU 優先なし または x64 にして Build したら改善されますか?。 (それで解決すれば、CPU ネイティブな cmd.exe を呼ぶ事が必要だった、となります。)
    • 回答としてマーク hornet1119 2020年1月15日 13:28
    • 編集済み ShiroYuki_Mot 2020年1月15日 13:36 cmd.exe の件を追記
    2020年1月15日 13:21

すべての返信

  • hornet1119 さま よろしく。

    energy.dll で検索すると、OS CPU アーキテクチャに依存する様ですので、
    OS が x64 の場合、Project が 32 優先になっていると、エラーを吐く気がします。
    AnyCPU 優先なし または x64 にして Build したら改善されますか?。 (それで解決すれば、CPU ネイティブな cmd.exe を呼ぶ事が必要だった、となります。)
    • 回答としてマーク hornet1119 2020年1月15日 13:28
    • 編集済み ShiroYuki_Mot 2020年1月15日 13:36 cmd.exe の件を追記
    2020年1月15日 13:21
  • 早速の返信ありがとうございます。
    ご指摘の通り、AnyCPUまたはx64にしたところ、問題なく実行できました。
    早急な回答をいただきとても助かりました。

    ありがとうございますm(_ _)m

    2020年1月15日 13:28