2

バイナリリーダーでファイルを読み取ると:

using (FileStream FilStr = new FileStream(MainPreferenceModel.Instance.PrintHeader.CompanyLogoFilePath, FileMode.Open))
{
    using (BinaryReader BinRed = new BinaryReader(FilStr))
    {
        HeaderFooterReportModel.Logo = BinRed.ReadBytes((int)BinRed.BaseStream.Length);
        BinRed.Close();
    }
    FilStr.Close();
}

問題はありませんが、 C:\logo.jpgなどのファイルを開くと、例外がスローされます。このファイルを読み取るためだけに UAC プロンプトを取得することは可能ですか? -user FileOpenDialog を使用してパスを取得します。

起動時に管理者としてプログラムを実行する方法を見つけましたが、このようなパス上のファイルにアクセスする方法はありますか? 管理者として実行コマンドを使用してそのファイルを他のパスにコピーできますが、これは解決策ではありません。

返信ありがとう

4

3 に答える 3

1

昇格は、プロセスの起動時にのみ実行されます。そのため、プロセスの存続期間中に昇格する方法はありません。起動時に一度だけ決定する必要があります。

アプリケーションが通常行うことは、昇格を必要とする特定のタスクを実行するために新しいプロセスを開始することです。runasコマンドライン引数を渡し、動詞を使用して昇格を要求するアプリケーションの新しいインスタンスを開始できます。または、昇格したアウトプロセス COM サーバーを使用して作業を行うこともできます。前者のほうがセットアップは簡単ですが、後者の方がクリーンなソリューションです。

于 2013-10-03T17:46:17.287 に答える