我想启动一个应用程序,不同的电脑可能安装在不同的地方,就是不去写路径,直接去系统里面找这个应用程序,然后打开怎么做?
没有必要从整个电脑中找某个文件,这样查找太慢,用户受不了的。
1:可以把要找的文件定入配置文件,在不同的电脑上,只要修改一下配置文件就行。
2:可以写在当前你的程序执行的路径下。在不同电脑上安装时,可以选择不同的目录,但你自己的程序能知道当前运行的路径的。
3:还有就是你要找的这个程序要如果是写入注册表的,还好找。不然的话,不太好找。只能费时间整个盘符下查找了。
这个用户肯定是接受不了,你在本机查找个文件什么的,一般都好长时间的。
嗯,谢谢,目前的情况是我要启动的东西是别人安装好的。我只能保证电脑上安装了这个东西毫不知情的情况下去打开。
我现在有这样一个需求,就是打开用户计算机上的 E1ement.txt 文件,那么请问:你要如何实现?
我现在是用 Process.Start("..\E1ement.txt");
请问这个有什么好的方法呢,望赐教。
@E1ement: 我问你问题的重点不在于你用什么 API 来启动,而是你如何确定 E1ement.txt 的路径。比如我在机器A,把 Element.txt 放在 C:\xxxx\123\123123\123123\123 目录下,我在机器B,把Element.txt 放在 F:\dxxxx\123\d1231df23\1df23123\123 目录下,你说你怎么确定 Element.txt 的路径?
@Launcher: 这种情况只能遍历磁盘了吧
@E1ement: 那么请问,“这种情况”是你的问题描述的场景吗?
@Launcher: 3Q
@Launcher: 是的。
@E1ement: 如果是的话,在没有一个外因来告诉你 E1ement.txt 的路径的前提下,你只能遍历,而且不限于本地磁盘,还包括网络磁盘、USB设备等可以作为存储的设备。
因此,你提问的时候,你需要把这些点都描述清楚,比如你可能的需求限定条件是允许通过一个辅助方式先设定 E1ement.txt 的路径;又或者只允许 E1ement.txt 存在于本地磁盘上等等。那么这些需求的限定条件就决定了最终解决方案应该是什么样子的。
同时,你还需要充分的了解 E1ement.txt 的特性,比如我假设你要启动的是 Excel.exe,那么很明显的特征是你可以通过注册表来查找到 Excel.exe 的绝对路径。
@Launcher: 哈哈,是啊,有时候感觉描述问题也是经验和技术上的一种局限,考虑的不全面被问题困扰的也有很大关系。谢谢。
这种情况比较难,除非这个应用程序有写入注册表,可以先找注册表里的安装路径
嗯,目前就是去 Local_MACHINE/Classes下面找的。
如果可以不计算路径,从控制台启动的话,倒是可以用Process这个玩意调用,否则的话,这个就不太好实现了。茫茫硬盘,找一文件何其难~
谢谢,通过找注册表实现了
建议将文件安装路径写进注册表,然后从注册表找
对,程序安装后会自动在注册表中写入。
如果没有任何标识的话基本很难实现,就算从注册表中安装程序列表里面查找也不能保证打开的程序就是你所需要的,所以要实现这种需求,除非你有配置文件或者某个指定的路径或者注册表或者活动文件目录来记录你安装程序的路径
System.AppDomain.CurrentDomain.BaseDirectory