2009-08-29 66 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。