[英]Prevent Application from running inside the wrong folder
我有一個(相當大的)應用程序,它取決於與該應用程序位於同一文件夾中的某些資源(例如,設置文件,非托管庫等)。
我還為此應用程序注冊了一個URI協議,以便每個以xyz://...
開頭的URI調用都將使用各自的參數啟動我的應用程序。
問題是,如果您使用URI調用,則應用程序將從%windir%/system32
-folder或../ProgramFiles/Chrome/...
-folder(當從我的Webbrowser調用URI時)運行)。 它不會從它所在的文件夾中運行我的應用程序。
(您可能已經看到我的問題了……)
如果我的應用程序是從sys32文件夾運行的,那么它(自然)將無法訪問本地庫,這是我的某些P / Invoke函數所需的。
我的問題是:如何從正確的文件夾運行我的應用程序,或者阻止它從sys32等文件夾運行?
if (Directory.GetCurrentDirectory().ToLower() != "/my/home/dir") { MessageBox.Show("You have no power over here!"); Exit(1); }
好的- @MutantNinjaCodeMonkey的 評論 最終幫助了我:
Directory.SetCurrentDirectory(@"c:\path\to\app");
將工作目錄“重置”到所需的路徑。 在我的特定情況下,我使用了:
FileInfo nfo = new FileInfo(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(nfo.Directory.FullName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.