【发布时间】:2009-12-09 10:56:16
【问题描述】:
是否有可靠的方法来检查应用程序是否从程序文件下的某处运行?
如果用户在本地机器上安装应用程序来编程文件,我们需要将可写文件放在其他地方以避免在 Vista 和 Win7 上进行虚拟化。但是,当安装到网络磁盘时,我们希望将这些文件与安装一起保存,以便用户之间共享访问。
今天我们在启动路径和CSIDL_PROGRAM_FILES 之间进行了字符串比较,但有人告诉我这是一个非常不可靠的方法。
有什么聪明的解决方案吗? 是否有我不知道的“IsRunningFromProtectedFolder()”-api? 是否有其他文件夹会出现与程序文件相同的问题?
【问题讨论】:
-
我不在乎哪种语言。这是windows问题,不是语言问题。问题应该与您使用的任何语言相同。
-
不要猜测用户可能需要什么,让他们选择更改数据文件的目录。例如,我们有一个客户,其系统为所有标准用户提供只读 C 驱动器。 OTOH IT 可能需要决定是否要在该系统的多个用户之间共享本地安装的数据文件。数据文件的位置是一个策略决定,与安装路径无关。
-
有趣 - 我开始有这样的概念问题,将我的东西转移到 Vista/Win 7。所以这是我喝咖啡坐下来,急切地等待想法和建议的地方StackOverflow 的。 :-)
-
@mghie:给出选择的问题在于,我们的大多数用户没有做出选择的知识。但是我看不到任何其他好的解决方案,而且我几乎已经说服了其他决策者,不可能发现什么是正确的。要知道,我们已经决定在安装过程中询问用户它是本地的、单用户安装、服务器上的共享安装,还是终端服务的安装。我们不确定最后一个。无论如何,我们已经记录了知识渊博的 sys.admins 的调整。 @robsoft:享受你的咖啡 ;-)
-
@Vegar:做出选择的关键是要有一个合理的默认值。我从注册表中读取了该位置,但默认为“我的文档”位置。如果他们不关心,用户可以在此处拥有文件,或者如果有人愿意,可以在 UI 中更改它们。
标签: c# c++ delphi windows-vista program-files