2009-08-29 62 views
2

好吧,我想制作启动其他应用程序的应用程序。然而,这里的目标是使应用程序“便携”,因为我可以从一个Windows桌面转到另一个,同时使用USB驱动器中的相同应用程序。所以这里是我的意思是不同的破坏:制作应用程序启动器

我有应用程序X.我在机器1上使用它,我想在机器2上使用它。但是,机器2是我的朋友,他不想我安装事情就在它上面。因此,我将安装程序在我的系统上制作的所有文件都放入文件夹中。 App X将文件放入它启动时预期的Windows文件夹中。如果我只是运行该应用程序,它看起来在Windows目录中,它不会找到这些文件。我没有/想要将文件放入Windows目录中。我想告诉应用程序在文件夹b中查找文件夹中的文件,而不是它通常会查找的位置。然后,我可以在任何机器上使用此程序,而无需以任何方式修改机器。

这是可行的吗?如果是这样的话,那么我可以查看它?

编辑:win dir是一个例子。我希望应用程序能够自包含在拇指驱动器上的文件夹中。我想将应用程序查找文件的位置重定向到我指定的文件夹。

回答

3

这可以完成,但完全取决于您正在启动的程序。

的东西,应用程序将要做的排序是:

  • 就高兴地跑被任何地方(不依赖)执行。这些非常简单!

  • 要求设置一些环境变量。这很容易实现 - 如果您愿意,可以使用修改后的环境启动新流程。

  • 从磁盘读取文件。通常,当加载类似.dll的应用程序时,应用程序将在PATH上搜索dll,以便将它们复制到应用程序文件夹中(在.exe旁边),并且它可以在任何系统上快速运行。但是,在某些情况下,应用程序将使用固定(或至少不太灵活)的路径,以便成功启动它们更困难。

  • 阅读注册表设置。这很棘手。您需要知道应用程序需要什么状态,让您的启动程序记录旧的注册表状态,更改它并运行应用程序,然后等待应用程序退出以恢复原始状态。这必须是防弹的,以避免用户注册表损坏。

最终,您需要为每个要启动的应用程序调查一下它需要运行的内容。

如果这些应用程序是商业应用程序,那么请注意,您没有通过以这种方式运行许可(EULA)条款。

另一种方法是设置一个虚拟PC映像并在主机上执行该映像,因此不必担心每个应用程序的特殊情况。根据您可用的VPC软件,您可能需要在主机PC上安装软件,以允许运行虚拟PC会话,这可能会破坏目的/意图。

+0

谢谢。我无法找到有关使用修改后的环境执行流程的信息。 – sobertillnoon 2009-08-29 20:40:06

+0

这取决于您使用的语言。例如,从C++开始,使用CreateProcess()来启动一个进程,并在lpEnvironment中传入你需要的任何环境变量。请参阅http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx。在C#/ VB中使用System.Diagnostics.Process.Start,传递ProcessStartInfo(其中包括环境变量):http://msdn.microsoft.com/en-us/library/0w4h05yb.aspx – 2009-08-30 07:36:58

+0

并使用lpEnvironment婴儿车我可以说实际上是“%windir = c:\ fakewindir” – sobertillnoon 2009-08-30 18:22:50

1

我认为你描述的系统是U3(更多信息请登录http://en.wikipedia.org/wiki/U3)。它要求应用程序遵循U3协议,但是如果应用程序执行该操作,则可以从U3闪存驱动器运行,而不需要主机上的任何安装或管理权限。

这是一项专有技术,只有少数供应商支持我所见过的技术。

如果你真的想要便携和功率,考虑VMWare播放器,并携带和整个机器,根据您的需要定制,在闪存驱动器上。当然,你的朋友可能不得不允许你安装VMWare Player。