鉴于我正在通过网络在计算机上执行EXE文件(D2006应用程序),我如何获取该计算机上commondocs文件夹的路径名,因为EXE可能是从UNC快捷方式调用的,或者是映射驱动器号快捷方式,并且远程机器的平台不一定是已知的(但将是> = WinXP)?
这种情况是客户端拥有大量分散的计算机,并且他们无法在所有PC上安装我的应用程序。所以他们所做的就是在网络上的某个地方安装可执行文件,并为每个人提供快捷方式。这似乎已经很好了,并且没有任何问题。
根据他们的要求,我让应用程序从与可执行文件放在同一文件夹中的INI文件中读取设置。我只能假设他们已经配置了所有用户可以写入该文件夹,以便可以保存回INI文件。
但是,我想更改它以便读取INI文件并将其保存到远程计算机上的commondocs文件夹树中的某个位置,这样它们就不需要提供对Program files文件夹的写入权限。
答案 0 :(得分:10)
正在运行您的程序的计算机是您可以访问的唯一计算机。程序存储的机器无关紧要。它只是一个磁盘驱动器。它可能没有运行Windows。它甚至可能是一个几乎不运行任何东西的NAS。
如果客户希望文件服务器的common-documents文件夹充当所有客户端系统上所有人的common-documents文件夹,那么让sysadmin在服务器上配置共享文件夹,然后{{3} }。您无需特殊编程。
要获取运行程序的机器的common-documents文件夹,您可以调用各种API函数,包括configure the clients to use that remote folder as their common-documents folder。您需要的ShGetFolderPath
值为CSIDL_COMMON_DOCUMENTS
。如果您改为致电CSIDL,请使用FOLDERID_PublicDocuments
。