2009-08-12 25 views
1

我使用VS2008在C#.net中创建了一个程序。如何参考我的.net程序的安装目录?

当用户安装该程序,我不知道这是否会在C:盘或d:驱动器或别的地方。问题是我需要程序自动创建文件,然后在没有任何用户帮助的情况下检索这些文件。

我认为最简单的情况是将这些文件放置在安装程序的目录中,以便位置保持不变,这种策略可以减少用户意外删除文件的几率。

问题1:

我如何引用我的应用程序的安装目录下,当用户自己选择安装位置的?

问题2:

应我甚至可以做这样或我应该从完全不同的角度看这个。

回答

3

Assembly.GetExecutingAssembly()。地点会给你的路径,当前执行的程序集。

不过,写入该位置将导致在Vista,Server 2008和更高版本上运行用户的问题,这是更加严格普通用户没有写像C的地方:\ Program Files文件。你最好的选择可能是这样的:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

有用于Environment.SpecialFolder一堆选项的基础上,正是你想存储的东西。

+0

使用'Environment.SpecialFolder'是最好的方法。 – 2009-08-12 03:20:23

+0

这对我很好。感谢Zack的帮助。 Ĵ – 2009-08-15 03:11:54

0

可以使用System.Environment.CurrentDirectory属性,以确定您的应用程序所属的位置。

或者,你可以看看独立存储。数据存储在用户/机器的基础上(如您选择),因此您可以为不同的用户存储不同的文件。

你的选择取决于你想要多少信息存储和安全周围。

+0

System.Environment.CurrentDirectory没有给出安装目录,它给出了当前的活动/工作目录。请参阅http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx – 2009-08-12 03:01:35

0

可以使用得到当前目录:

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

这是存储与您的.exe文件的一个有效和有益的方式 - 你可以随时浏览使用从您的可执行文件运行相对目录,这意味着你不必担心它的安装位置。或者,如果您希望您的.exe可自由复制到任何目录,则可以考虑将数据存储在众所周知的位置,例如用户的配置文件(用于Windows)中的应用程序设置目录。

1

听起来像是在.net(System.IO.IsolatedStorage)独立的存储功能的完美解决方案。

您通过对象进行访问,路径由.Net控制。它将项目存储在每个登录的本地设置\应用程序数据\隔离存储中。

相关问题