无法以编程方式找到Win10启动文件夹 C#

4
在运行Windows 10时,运行这段简单的代码会抛出目录未找到的异常。我可以手动导航到该目录并正常访问。是什么原因呢?
shortcut_location_root = Environment.GetFolderPath(Environment.SpecialFolder.Startup);

if (String.IsNullOrEmpty(shortcut_location_root))
{   
  //FALLS IN HERE
    shortcut_location_root =
      Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Start Menu\Programs\Startup";

//BLOWS UP HERE DIRECTORY NOT FOUND
 if (File.Exists(Path.Combine(shortcut_location_root, "someFile" + ".url")))
 {
     //do stuff
 }

@RandRandom 我正在使用 .net 3.5,看起来 CommonStartup 不是可用选项。 - nlstack01
对我来说可以。此外,第一个调用(使用SpecialFolder.Startup)确实返回了一个路径,即“C:\ Users \ username \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup”。运行此代码的用户是谁?它是ASP.NET应用程序池标识还是类似于此类的东西? - Cee McSharpface
1
我正在以非管理员用户身份登录桌面计算机。这可能是权限问题吗?我可以这么说,但为什么我可以手动导航到目录呢? - nlstack01
我也是。刚刚升级到3.5并重试,没有任何区别,可以工作。很奇怪。你观察到的第二次调用“GetFolderPath”的运行时值是多少?那个用户是否有漫游域配置文件? - Cee McSharpface
尝试以管理员身份运行,看看是否会出现相同的情况。 - Niklas
显示剩余7条评论
1个回答

0
如果出现“目录未找到”错误,则该目录不存在。系统在注册表中存储已知文件夹的位置,因此仅因为存在注册表条目并不意味着该文件夹一定存在。相反,注册表条目指定了如果需要,应将该文件夹放置在何处。
可能正在发生的是 shell(Explorer.exe)会“按需”创建该文件夹,这就是为什么您可以浏览到它的原因。
只需首先调用 System.IO.Directory.CreateDirectory。这将在不存在该目录时创建该目录,或者如果该目录已经存在则打开它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接