在Windows中,如何让其他应用程序能够以编程方式启动我的应用程序?

在Windows中,如何让其他应用程序能够以编程方式启动我的应用程序?,windows,integration,Windows,Integration,我已经编写了一个Windows应用程序。我希望其他应用程序能够以编程方式启动我的应用程序。我如何才能做到这一点,需要考虑哪些因素 编辑:澄清一下,我不是问其他应用程序如何启动我的应用程序;我在问我能做些什么来确保其他应用程序能够启动我的应用程序。在Windows中,没有安全措施阻止应用程序运行另一个应用程序(至少在用户模式下,在管理模式下运行需要在管理模式下执行其他程序,或者提示用户在管理模式下运行). 另一个应用程序只需知道.exe文件位置的路径,就可以执行它。如果另一个程序不知道确切的路径,

我已经编写了一个Windows应用程序。我希望其他应用程序能够以编程方式启动我的应用程序。我如何才能做到这一点,需要考虑哪些因素


编辑:澄清一下,我不是问其他应用程序如何启动我的应用程序;我在问我能做些什么来确保其他应用程序能够启动我的应用程序。

在Windows中,没有安全措施阻止应用程序运行另一个应用程序(至少在用户模式下,在管理模式下运行需要在管理模式下执行其他程序,或者提示用户在管理模式下运行). 另一个应用程序只需知道.exe文件位置的路径,就可以执行它。如果另一个程序不知道确切的路径,但它知道在哪里查找以及您的程序.exe被调用,那么它也可以在执行它之前在文件系统中搜索它


至于具体如何启动您的程序的.exe文件,这将取决于他们的程序所使用的语言,以及启动.exe的系统API的调用方式。

要启动应用程序而不必知道其安装位置的明确路径,您需要通过将其添加到应用程序路径注册表树,向Windows注册它

这通常在应用程序安装期间完成


请参见

简单的答案是,他们只需要使用带有应用程序路径的system()函数。但您可能正在寻找其他东西,因此您需要更加精确:您是否希望您的应用程序与其他应用程序进行互操作(以及以何种方式),您是否希望它们在一天中的特定时间启动您的应用程序,…?是的,这很简单,但似乎您刚刚做到了这一点。另一个应用程序如何知道我的应用程序的路径?我的问题是firefox有什么不同之处,可以用“启动firefox”打开?@Leon这些应用程序是在
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App path
注册表项下注册的。Jeff,解释一下你的答案,你的意思是我不能在我这方面采取任何额外的措施,任何知道我的可执行文件路径的应用程序都可以启动我的应用程序,或者愿意&能够通过搜索文件系统找到该路径的应用程序都可以启动我的应用程序。好吧,但这似乎有限制。我希望我的应用程序可以由不知道可执行文件路径的应用程序启动,并且不愿意或无法通过搜索文件系统找到该路径。其他应用程序知道关于你的应用程序的哪些信息?如果他们只知道名称,那么Bruce在系统注册表中注册可执行路径的解决方案是一个很好的解决方案。Bruce,我是否正确理解应用路径注册表树位于HKEY_LOCAL_MACHINE\Software下,因此,我的应用程序的注册将无法被与我的应用程序具有不同的32位和64位体系结构的应用程序读取?关于我之前的评论:我做了一个实验,发现32位和64位应用程序都可以读取32位和64位写的应用程序路径注册表值位应用程序。这与我对注册表重定向的理解不符,但它确实证明了Bruce的解决方案是完整的,我不必担心我的应用程序会因为架构不匹配而被某些应用程序发现。