高速ディスク使用状況検出プログラムを作成したい場合、これを実行する最速の方法はFileSystemObject
です。 FileSystemObject
はCOM -> Microsoft Scripting Runtime
です。C#でFileSystemObjectを使用中にセキュリティ例外が発生しました
すべてのコードはシンプルで、ここで解析しました。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiskUsage
{
class Program
{
const string FolderPath = @"C:\Windows\System32";
static void Main(string[] args)
{
var startTime = DateTime.Now;
Scripting.FileSystemObject fso = new Scripting.FileSystemObject();
Scripting.Folder folder = fso.GetFolder(FolderPath);
Int64 dirSize = (Int64)folder.Size;
TimeSpan span = DateTime.Now.Subtract(startTime);
System.Console.WriteLine("{1} size: {0}", dirSize, FolderPath);
System.Console.WriteLine("use time: {0}", span);
System.Console.ReadKey();
}
}
}
そして私のセットアップapp.manifest
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
私は私のプログラムをテスト
に、セキュリティ例外が私のために申し訳ありませんが、私は手動で変換する(このラインInt64 dirSize = (Int64)folder.Size;
例外情報に来ます英語が貧しい人)は
Unhandled exception type “System.Security.SecurityException” occurred in DiskUsage.exe
Other message: exception from HRESULT:0x800A0046 (CTL_E_PERMISSIONDENIED)
です
FolderPath
を@"D:\Codes"
に変更した場合。それはうまく動作します。したがって、マニフェストのセキュリティ設定はCOM -> Microsoft Scripting Runtime
には影響しないと思います。誰でもこれを修正する方法を知っていますか?助けてください、ありがとう。
ありがとうございました。それはうまくいくだろうが、私は、すべてのファイルにアクセスする許可を得る方法が中心的な問題だと思う? – Jennal
あなたはあなたのプロセスを昇格させたり、権限のないフォルダを見つけたり、所有権を得ようとしたり、権限を割り当てたりすることはできますが、それはフェールセーフではありません。私のソリューションは、あなたがアクセス権を持つファイルのためのフォルダ化を提供します。 – rene
はい、あなたは正しいです。私はあなたの解決策を試みるでしょう。 – Jennal