如何通过在.net中知道其名称来找到另一个exe的路径?C#如何注册EXE?
我会向OS环境变量添加名称吗? 其他应用程序是否必须在其他地方“注册”自己?
我需要应用程序A启动应用程序B并调用一些WCF服务。
谢谢!
如何通过在.net中知道其名称来找到另一个exe的路径?C#如何注册EXE?
我会向OS环境变量添加名称吗? 其他应用程序是否必须在其他地方“注册”自己?
我需要应用程序A启动应用程序B并调用一些WCF服务。
谢谢!
要回答你的问题:只需知道名字就无法知道路径。一个exe可以驻留在文件系统的任何地方。可能有多个不知道彼此的实例。完全不同的多个exe文件可以具有相同的名称。
你可以采取几种方法之一克服这个,这取决于你正在靶向的exe:
对于两个中f这些选项可以保存结果,以便下次运行应用程序时不必再次执行它。
搜索文件系统可能需要一些时间,您不能保证找到exe(取决于您的应用程序运行的用户级别),并且您可能会得到误报,尤其是如果应用程序被称为愚蠢像设置.exe。
让用户在第一次运行时找到exe文件可能是最可靠的找到它的方法,但是如果应用程序运行但目标exe文件不再位于指定位置,则必须决定如何处理,或者用户选择了错误的exe。
如果您对应用程序B(即它是您的产品)有一定的控制权,那么您可以考虑在安装应用程序B时向注册表中的已知位置添加一些信息,以便应用程序A可以轻松找到它。您仍然需要制定计划B,以防万一信息丢失。
在配置设置中引用一个exe文件快捷方式的路径,这样,如果exe文件在快捷方式中移动,仍然是最新的。尝试一下,制作一个exe的快捷方式,然后剪切并粘贴到其他地方的exe,然后双击快捷方式,你会看到它指向exe的新位置,因此不会要求更改应用程序A,如果位置应用程序B更改。
真的,只需将App B设置为Windows服务并在需要时启动它。
UPDATE:
另一个建议是创建一个硬链接到APPB的EXE:
mklink /H AppB-link.exe path_to_actual_exe
或者一个符号链接到整个目录,应用B所在:
mklink /D virtual_directory path_to_actual_directory
你不能把B的路径放在应用程序A的配置设置中吗? – Amy 2010-12-01 01:36:14
这会工作,会有一个更清洁的解决方案?更清晰的意思是,如果应用程序B的位置发生更改,则不需要更改应用程序A.感谢您的评论。 – dnndeveloper 2010-12-01 01:44:53
将路径置于配置设置中将无需在应用程序B移动时修改应用程序A.您只需修改ApplicationA.exe.config文件即可。不需要重新编译。 – 2010-12-01 01:50:47