2011-05-20 30 views
5

鑑於我正在通過網絡在計算機上執行EXE文件(D2006應用程序),如何獲取該機器上的commondocs文件夾的路徑名,因爲EXE可能是從UNC快捷方式或映射的驅動器盤符快捷方式調用的,並且遠程機器的平臺不一定是已知的(但是> = WinXP)?如何找出網絡機器上的通用文檔文件夾的名稱

在這種情況下,客戶端擁有大量分散的機器,並且他們不會爲在所有PC上安裝我的應用程序而煩惱。所以他們所做的是在網絡的某個地方安裝可執行文件,併爲每個人提供一個快捷方式。這似乎已經適合他們,並且在那裏沒有問題。

應他們的要求,我讓應用程序從與可執行文件放在同一文件夾中的INI文件中讀取設置。我只能假設他們已經配置了所有用戶可以寫入該文件夾的內容,以便可以保存INI文件。

但是,我想對其進行更改,以便讀取INI文件並將其保存到遠程計算機的commondocs文件夾樹中的某個位置,以便它們不需要提供對程序文件文件夾的寫入訪問權限。

+1

我懷疑你可以,因爲我認爲你需要登錄到機器才能獲取這些信息。 – Misha 2011-05-20 02:51:03

+0

Hi @Misha。更多詳細信息添加到問題 - 謝謝R – rossmcm 2011-05-20 03:24:23

+0

「這種情況是客戶端擁有大量分散機器的地方,並且他們不會爲在所有PC上安裝我的應用程序而煩惱。如果他們能管理他們,他們也可以管理他們的軟件。如果他們無法管理他們,那麼他們有問題...;) – 2011-05-20 10:56:17

回答

10

機器即正在運行您的程序是您唯一可以訪問的機器。您的程序存儲的機器是無關緊要的。這只是一個磁盤驅動器。它可能沒有運行Windows。它甚至可能是一個幾乎沒有運行任何東西的NAS。

如果客戶希望文件服務器的通用文檔文件夾充當所有客戶端系統上的每個人的通用文檔文件夾,請使用sysadmin在服務器上配置共享文件夾,然後configure the clients to use that remote folder as their common-documents folder。對此你沒有特別的編程要求。

讓你的程序正在運行的機器的常見的文檔文件夾,你可以調用任何的各種API函數,包括ShGetFolderPath。您需要的CSIDL值是CSIDL_COMMON_DOCUMENTS。如果您撥打SHGetKnownFolderPath,請使用FOLDERID_PublicDocuments

+0

感謝@Rob。事情是,客戶不希望與工作站有任何關係。他想要做的就是在服務器上安裝應用程序。如果在安裝時創建的應用程序的'{PF} \ MyApp'爲可執行文件'{PF} \ MyApp的\應用Data'的INI文件(並給出了'{PF} \ MyApp的\應用程序文件夾Data'「everyone-修改「訪問權限),不會工作嗎?我可以在哪裏工作INI文件是從可執行文件路徑,每個人都會讀寫訪問INI文件夾,沒有人可以修改任何其他'{PF}'文件夾。 – rossmcm 2011-05-20 09:48:27

+0

是的,這聽起來像一個很好的選擇。好主意。 – 2011-05-20 13:07:15

相關問題