2012-12-13 91 views
1

請參閱此線程:
path of desktop for current user爲什麼Environment.SpecialFolder.Desktop是空

此代碼(平均路徑)在我的本地機器是好的,但出版的回報沒有...
後,我的意思是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); 
    // } 
    //} 

發生了什麼事情,我該如何解決它?

+1

什麼用戶是網站下運行的? –

+0

我怎麼找到它? – MoonLight

+0

我有我自己的服務器,並有完全訪問權限! – MoonLight

回答

6

如果該網站沒有以具有交互式登錄特權的用戶身份運行,那麼將沒有與該用戶關聯的桌面。

這通常是IIS中應用程序池的情況。

使用交互式登錄運行應用程序池並不明智,因爲它會創建安全漏洞。

+0

我怎樣才能讓我的網站訪問服務器的桌面? (我有自己的服務器) – MoonLight

+1

@MoonLight:如果您必須寫入特定交互式用戶的桌面,請在桌面上創建一個文件夾,並授予應用程序池用戶權限以根據需要訪問該文件夾。 「服務器」沒有桌面,每個具有交互式登錄特權的個人用戶帳戶都可以。 'SpecialFolders.CommonDesktopDirectory'表示所有用戶將看到的桌面項目。 –

+0

親愛的Eric J.我將它的身份更改爲管理員 - >仍然該路徑爲空。我也沒有幫助,重新啓動iis! – MoonLight

1

可能應用程序池在服務帳戶下運行,而不是您的個人Windows帳戶。

+0

感謝您的答案/我如何改變它? – MoonLight

+0

閱讀:http://www.iis.net/learn/manage/configuring-security/application-pool-identities –

+1

@MoonLight:不要將其更改爲交互式登錄。這造成了一個真正的安全漏洞。相反,請使用適用於應用程序池用戶的其他位置。如果您必須寫入特定交互式用戶的桌面,請在桌面上創建一個文件夾,並授予應用程序池用戶權限以根據需要訪問該文件夾。 –