我有一个(相当庞大的)应用程序,它取决于与应用程序位于同一文件夹中的某些资源(例如设置文件,非托管库等)。
我还为此应用程序注册了一个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);
}
答案 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);