【问题标题】:why Environment.SpecialFolder.Desktop is empty为什么 Environment.SpecialFolder.Desktop 是空的
【发布时间】:2012-11-30 19:28:07
【问题描述】:

请看这个帖子:
path of desktop for current user

我本地机器上的这段代码(平均路径)没问题,但发布后什么也没返回...
我的意思是Environment.GetFolderPath(Environment.SpecialFolder.Desktop) 发布后为空...

    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    Response.Write(path);
    Response.Write("<br />");
    Response.Write(Server.MapPath("/") + "myfile.htm");
    Response.Write("<br />");

    //string[] directory_list = Directory.GetDirectories(path);
    //foreach (string directory in directory_list)
    //{
    //    if (directory.Contains("blablabla"))
    //    {
    //        string sumfilePath = directory + @"\Sum.txt";
    //        Response.Write(sumfilePath);
    //    }
    //}

发生了什么,我该如何解决?

【问题讨论】:

  • 网站在哪个用户下运行?
  • 我有自己的服务器并拥有完全访问权限!
  • 投反对票的请给我评论!
  • 我正在使用默认应用程序池 = .net 4 集成...

标签: c# asp.net .net path windows-server-2008-r2


【解决方案1】:

应用程序池可能在服务帐户下运行,而不是您的个人 Windows 帐户。

【讨论】:

  • @MoonLight:不要将其更改为交互式登录。这会造成一个真正的安全漏洞。相反,请使用应用程序池用户可用的其他位置。如果您必须写入特定交互式用户的桌面,请在桌面上创建一个文件夹,并根据需要授予应用程序池用户访问该文件夹的权限。
【解决方案2】:

如果站点不是以具有交互式登录权限的用户身份运行的,则不会有与该用户关联的桌面。

这通常是 IIS 中的应用程序池的情况。

使用交互式登录运行应用程序池是不明智的,因为它会造成安全漏洞。

【讨论】:

  • 如何让我的网站访问服务器的桌面? (我有自己的服务器)
  • @MoonLight:如果您必须写入特定交互式用户的桌面,请在桌面上创建一个文件夹,并根据需要授予应用程序池用户访问该文件夹的权限。 “服务器”没有桌面,每个具有交互式登录权限的个人用户帐户都有。 SpecialFolders.CommonDesktopDirectory 代表所有用户都会看到的桌面项目。
  • 亲爱的 Eric J. 我将其身份更改为管理员 -> 路径仍然是空的。我也毫无帮助地重新启动了 iis!
  • 您不希望网站以管理员身份运行。您真的不能使用与服务器桌面不同的文件夹...?
  • 我的桌面上有很多文件需要读写,这些文件是由win app软件每小时创建的。所以我不能将它们移动到 www 根目录。在空闲时间我想访问它们。所以桌面访问非常重要。
猜你喜欢
  • 2016-12-06
  • 2021-12-08
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2021-12-12
相关资源
最近更新 更多