阻止应用程序在错误的文件夹

时间:2015-12-01 19:44:30

标签: c# uri directory environment

我有一个(相当庞大的)应用程序,它取决于与应用程序位于同一文件夹中的某些资源(例如设置文件,非托管库等)。
我还为此应用程序注册了一个URI协议,因此每个以xyz://...开头的URI调用都将使用相应的参数启动我的应用程序。

问题是,如果使用URI调用,应用程序将从%windir%/system32 - 文件夹或../ProgramFiles/Chrome/... - 文件夹(从我的webbrowser调用URI时)运行。它不会从它所在的文件夹中运行我的应用程序。

(你可能已经看到了我的问题......)

如果我的应用程序从sys32文件夹运行,它(自然)将无法访问我的一些P / Invoke函数所需的本地库。

我的问题是:如何从正确的文件夹运行我的应用程序或阻止它从sys32这样的文件夹运行?

<小时/> 不 - 我不喜欢以下想法:

if (Directory.GetCurrentDirectory().ToLower() != "/my/home/dir") {
    MessageBox.Show("You have no power over here!");

    Exit(1);
}

1 个答案:

答案 0 :(得分:0)

好的 - this comment@MutantNinjaCodeMonkey撰写,最终帮助了我:

Directory.SetCurrentDirectory(@"c:\path\to\app");

&#34;复位&#34;工作目录到所需的路径。在我的具体案例中,我使用了:

FileInfo nfo = new FileInfo(Assembly.GetExecutingAssembly().Location);

Directory.SetCurrentDirectory(nfo.Directory.FullName);