Environment.GetFolderPath(Environment.SpecialFolder.System)与System32文件夹的Environment.SystemDirectory之间的区别

Com*_*ser 3 .net c# windows special-folders system32

我想system32在32位Windows和SysWOW6464位Windows 上获取路径路径.无论Environment.GetFolderPath(Environment.SpecialFolder.System)Environment.SystemDirectory做工精细.我应该选择和使用哪一个?我使用的是.NET 2.0

Raj*_*dar 7

你可能更喜欢使用

Environment.SystemDirectory
Run Code Online (Sandbox Code Playgroud)

这是因为,.NET框架已经知道你需要什么文件夹,并且在幕后直接调用

Win32Native.GetSystemDirectory
Run Code Online (Sandbox Code Playgroud)

从底层kernerl32.dll..(然后进行快速权限检查)

如果你使用,

Environment.GetFolderPath
Run Code Online (Sandbox Code Playgroud)

那么你必须传入一个枚举,并且在封面下GetFolderPath必须进行快速枚举有效性检查.完成后,它会调用本机

Win32Native.SHGetFolderPath
Run Code Online (Sandbox Code Playgroud)

传入相当于所需文件夹类型的整数.

这将从本机调用底层方法,shfolder.dll 并且此方法将再次具有基于所请求文件夹的检查开关/案例,并最终调用系统目录逻辑.

基于以上2个流程,

Environment.SystemDirectory
Run Code Online (Sandbox Code Playgroud)

应该更合适,也可能更快.(我还没有真正测量过)