【问题标题】:How to find out the name of the common documents folder on a network machine如何在网络机器上找出公共文档文件夹的名称
【发布时间】:2011-05-20 02:46:05
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我怀疑你能做到,因为我认为你需要登录机器才能获得这些信息。
  • 嗨@Misha。更多细节添加到问题 - 谢谢R
  • “这种情况是客户端有大量分散的机器,他们懒得在所有PC上安装我的应用程序”。如果他们可以管理它们,他们也可以管理它们的软件。如果他们无法管理它们,那么,他们就有问题了...... ;)

标签: delphi networking unc delphi-2006 mapped-drive


【解决方案1】:

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

如果客户希望文件服务器的 common-documents 文件夹充当所有客户端系统上每个人的 common-documents 文件夹,请让系统管理员在服务器上配置一个共享文件夹,然后 configure the clients to use that remote folder as their common-documents folder。您无需为此进行特殊编程。

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

【讨论】:

  • 谢谢@Rob。问题是,客户不想与工作站有任何关系。他要做的就是在服务器上安装应用程序。如果应用程序的安装为可执行文件创建了{pf}\MyApp,并为INI 文件创建了{pf}\MyApp\Application Data(并为{pf}\MyApp\Application Data 文件夹提供了“everyone-modify”访问权限),那不可行吗?我可以从可执行文件的路径中找出 INI 文件的位置,每个人都对 INI 文件夹具有读写权限,并且没有人可以修改任何其他 {pf} 文件夹。
  • 是的,这听起来是个不错的选择。好主意。
猜你喜欢
  • 1970-01-01
  • 2012-11-30
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多