いくつかの dll ファイルを System32 フォルダーにコピーするバッチ ファイルを作成しました。C# コードで記述したプログラムからこのバッチを実行しました。
string path = @"ABC\install.bat";
ProcessStartInfo procStartInfo = new ProcessStartInfo()
{
UseShellExecute = true,
CreateNoWindow = false,
FileName = "\"" + path + "\"",
//Arguments = "\"" + path + "\""
Verb = "runas"
};
using (Process proc = new Process())
{
proc.StartInfo = procStartInfo;
proc.Start();
}
すべてがうまくいきました。Windows 7 からの変更を確認するポップアップ メッセージが表示されました。コンソールは、ファイルがコピーされたことも証明しました。
C:\Program Files\XXX>copy commpro.dll C:\Windows\system32\
1 file(s) copied.
しかし、System32 フォルダーを見ると、そこに dll が見つかりませんでした。それはとても奇妙です!
誰でもこの問題が発生しますか?
編集: 私の質問はこの質問とは異なります: How to write files in C:\Windows\System32 with full permissions
ここで、System32 フォルダーへの書き込み権限を付与できるポップアップが表示されます。そして、「コピー」コマンドの出力は、「アクセスが拒否されました」ではなく「コピーされました」と表示されました。問題は、「コピー済み」と表示されているのに dll が含まれていないことです。