Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何注册exe?_C# - Fatal编程技术网

C#如何注册exe?

C#如何注册exe?,c#,C#,我如何通过知道另一个exe在.net中的名称来找到它的路径 我是否要向OS环境变量添加名称? 其他应用程序是否必须在其他地方“注册”自身 我需要应用程序A启动应用程序B,并在其上调用一些WCF服务 谢谢 在配置设置中引用exe快捷方式的路径,这样,如果exe在快捷方式周围移动,该快捷方式仍然是最新的。尝试一下,创建一个exe的快捷方式,然后将exe剪切并粘贴到其他地方,然后双击该快捷方式,您将看到它指向exe的新位置,因此,如果位置app B更改,则不需要更改app a。在配置设置中引用exe快

我如何通过知道另一个exe在.net中的名称来找到它的路径

我是否要向OS环境变量添加名称? 其他应用程序是否必须在其他地方“注册”自身

我需要应用程序A启动应用程序B,并在其上调用一些WCF服务


谢谢

在配置设置中引用exe快捷方式的路径,这样,如果exe在快捷方式周围移动,该快捷方式仍然是最新的。尝试一下,创建一个exe的快捷方式,然后将exe剪切并粘贴到其他地方,然后双击该快捷方式,您将看到它指向exe的新位置,因此,如果位置app B更改,则不需要更改app a。

在配置设置中引用exe快捷方式的路径,这样,如果exe在快捷方式周围移动,它仍然是最新的。尝试一下,创建一个exe的快捷方式,然后将exe剪切并粘贴到其他地方,然后双击快捷方式,您将看到它指向exe的新位置,因此,如果位置app B发生更改,则不需要更改app a。

真的,只需将app B设置为windows服务,并在需要时启动它即可

更新:

另一个建议是创建到AppB的EXE的硬链接:

mklink /H AppB-link.exe path_to_actual_exe
或指向应用程序B所在的整个目录的符号链接:

mklink /D virtual_directory path_to_actual_directory

真的,只要将应用程序B设置为windows服务,并在需要时启动它即可

更新:

另一个建议是创建到AppB的EXE的硬链接:

mklink /H AppB-link.exe path_to_actual_exe
或指向应用程序B所在的整个目录的符号链接:

mklink /D virtual_directory path_to_actual_directory

回答你的问题:你不能仅仅通过知道名字就知道路径。exe可以驻留在文件系统的任何位置。可能有多个彼此不了解的实例。完全不同的多个exe文件可以具有相同的名称

根据所针对的exe,您可以采取以下几种方法之一来解决此问题:

  • 让用户使用普通的文件浏览对话框浏览exe
  • 搜索文件系统
  • 查看目标exe在系统上留下的跟踪(文件系统、注册表、环境变量等),并使用这些跟踪来定位exe
对于这两个选项中的任何一个,您都可以保存结果,以便下次运行应用程序时不必再次执行它

搜索文件系统可能需要一些时间,您不能保证找到exe(取决于您的应用程序运行时的用户级别),并且您可能会得到误报,尤其是当该应用程序被称为类似setup.exe的哑程序时

让用户在您第一次运行时定位exe可能是最可靠的定位方式,但是如果您的应用程序运行时目标exe不再位于指定位置,或者用户选择了错误的exe,则您必须决定该怎么做


如果你对App B有控制权(即它是你的产品),那么你可以考虑在App B安装时向注册表中的一个已知位置添加一些信息,这样APP可以很容易地找到它。你仍然需要有一个B计划,以防信息丢失。

回答你的问题:你不能仅仅通过知道名字就知道路径。exe可以驻留在文件系统的任何位置。可能有多个彼此不了解的实例。完全不同的多个exe文件可以具有相同的名称

根据所针对的exe,您可以采取以下几种方法之一来解决此问题:

  • 让用户使用普通的文件浏览对话框浏览exe
  • 搜索文件系统
  • 查看目标exe在系统上留下的跟踪(文件系统、注册表、环境变量等),并使用这些跟踪来定位exe
对于这两个选项中的任何一个,您都可以保存结果,以便下次运行应用程序时不必再次执行它

搜索文件系统可能需要一些时间,您不能保证找到exe(取决于您的应用程序运行时的用户级别),并且您可能会得到误报,尤其是当该应用程序被称为类似setup.exe的哑程序时

让用户在您第一次运行时定位exe可能是最可靠的定位方式,但是如果您的应用程序运行时目标exe不再位于指定位置,或者用户选择了错误的exe,则您必须决定该怎么做


如果你对App B有控制权(即它是你的产品),那么你可以考虑在App B安装时向注册表中的一个已知位置添加一些信息,这样APP可以很容易地找到它。您仍然需要有一个计划B,以防信息丢失。

您不能将B的路径放在应用程序a的配置设置中吗?这样可以,有更干净的解决方案吗?我所说的“清洁剂”是指,如果应用程序B的位置发生变化,则不需要对应用程序A进行更改。感谢您的评论。当应用程序B移动时,将路径放入配置设置不需要修改应用程序A。您所要做的就是修改ApplicationA.exe.config文件。无需重新编译。@yodaj007:您可能希望用您的建议和示例创建一个答案。为什么不将应用程序B设置为Windows服务,并让它一直运行?您不能在应用程序a的配置设置中设置B的路径吗?这样行得通,有更干净的解决方案吗?我所说的“清洁剂”是指,如果应用程序B的位置发生变化,则不需要对应用程序A进行更改。感谢您的评论。当应用程序B移动时,将路径放入配置设置不需要修改应用程序A。您所要做的就是修改ApplicationA.exe.config文件。无需重新编译。@yodaj007:您可能希望用您的建议和示例创建一个答案。为什么不将应用程序B设置为Windows服务并让它一直运行?应该提到应用程序