C# 如何访问“开始”菜单路径?

C# 如何访问“开始”菜单路径?,c#,wpf,C#,Wpf,我需要从C:\ProgramData\Microsoft\Windows\Start Menu\Programs及其子文件夹获取文件 我试着让他们这样: string path = @"C:\ProgramData\Microsoft\Windows\Start Menu\"; string[] lnks = Directory.GetFiles(path, "*.lnk", SearchOption.AllDirectories);` 但这给了我一个错误: An unhandled exce

我需要从C:\ProgramData\Microsoft\Windows\Start Menu\Programs及其子文件夹获取文件

我试着让他们这样:

string path = @"C:\ProgramData\Microsoft\Windows\Start Menu\";
string[] lnks = Directory.GetFiles(path, "*.lnk", SearchOption.AllDirectories);`
但这给了我一个错误:

An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll Access denied to the path : 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs'
这就是我试图进入这条道路的原因

<requestedExecutionLevel  level="highestAvailable" uiAccess="false" /> to the app.manifest
File.GetAccessControlpath;编码

以管理员身份启动Visual Studio

他们都没有工作。那么如何从该路径获取这些文件呢?

您可以试试这个


字符串allUsers=Environment.GetEnvironmentVariableALLUSERSPROFILE+\Start Menu\Programs

该文件夹的问题是存在一个名称为您的区域性本地化的文件夹,例如在我的机器中,我有一个名为Programmi的文件夹,重分析点和一个名为Programs的真实文件夹

试图读取RepassePoint文件夹时,Directory.GetFiles似乎失败了,但您可以使用以下代码避免它

string path = @"C:\ProgramData\Microsoft\Windows\Start Menu\";
string[] dirs = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly);
foreach (string s in dirs)
{
    DirectoryInfo di = new DirectoryInfo(s);
    if (!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) 
    {
        string[] lnks = Directory.GetFiles(s, "*.lnk", SearchOption.AllDirectories);
    }
}

无法更改路径并将文件放在其他文件夹中。最好的方法是授予文件夹的安全权限。