5

鉴于我正在通过网络在一台机器上执行 EXE 文件(D2006 应用程序),我如何获取该机器上 commondocs 文件夹的路径名,因为该 EXE 可能是从 UNC 快捷方式或映射的驱动器号调用的快捷方式,并且不一定知道远程机器的平台(但将> = WinXP)?

这种情况是客户端有大量分散的机器,他们不会费心在所有 PC 上安装我的应用程序。所以他们所做的就是在网络上的某个地方安装可执行文件,并为每个人提供一个快捷方式。这似乎已经很适合他们,并且没有问题。

应他们的要求,我让应用程序从与可执行文件位于同一文件夹中的 INI 文件中读取设置。我只能假设他们已经配置了一些东西,以便所有用户都可以写入该文件夹,以便可以保存 INI 文件。

但是,我想更改它,以便读取 INI 文件并将其保存到远程计算机上的 commondocs 文件夹树中的某个位置,这样它们就不需要提供对 Program files 文件夹的写访问权限。

4

1 回答 1

10

运行您的程序的机器是您唯一可以访问的机器。存储程序的机器无关紧要。它只是一个磁盘驱动器。它可能没有运行 Windows。它甚至可能是一个几乎不运行任何东西的 NAS。

如果客户希望文件服务器的 common-documents 文件夹充当所有客户端系统上每个人的 common-documents 文件夹,则让系统管理员在服务器上配置一个共享文件夹,然后配置客户端以使用该远程文件夹作为他们的 common-documents 文件夹。您无需为此进行特殊编程。

要获取运行程序的机器的 common-documents 文件夹,您可以调用任何各种 API 函数,包括ShGetFolderPath. 您需要的CSIDL值为CSIDL_COMMON_DOCUMENTS. 如果您SHGetKnownFolderPath改为调用,请使用FOLDERID_PublicDocuments.

于 2011-05-20T03:53:51.713 回答