我使用VS2008在C#.net中创建了一个程序。如何参考我的.net程序的安装目录?
当用户安装该程序,我不知道这是否会在C:盘或d:驱动器或别的地方。问题是我需要程序自动创建文件,然后在没有任何用户帮助的情况下检索这些文件。
我认为最简单的情况是将这些文件放置在安装程序的目录中,以便位置保持不变,这种策略可以减少用户意外删除文件的几率。
问题1:
我如何引用我的应用程序的安装目录下,当用户自己选择安装位置的?
问题2:
应我甚至可以做这样或我应该从完全不同的角度看这个。
我使用VS2008在C#.net中创建了一个程序。如何参考我的.net程序的安装目录?
当用户安装该程序,我不知道这是否会在C:盘或d:驱动器或别的地方。问题是我需要程序自动创建文件,然后在没有任何用户帮助的情况下检索这些文件。
我认为最简单的情况是将这些文件放置在安装程序的目录中,以便位置保持不变,这种策略可以减少用户意外删除文件的几率。
问题1:
我如何引用我的应用程序的安装目录下,当用户自己选择安装位置的?
问题2:
应我甚至可以做这样或我应该从完全不同的角度看这个。
Assembly.GetExecutingAssembly()。地点会给你的路径,当前执行的程序集。
不过,写入该位置将导致在Vista,Server 2008和更高版本上运行用户的问题,这是更加严格普通用户没有写像C的地方:\ Program Files文件。你最好的选择可能是这样的:
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
有用于Environment.SpecialFolder一堆选项的基础上,正是你想存储的东西。
可以使用System.Environment.CurrentDirectory属性,以确定您的应用程序所属的位置。
或者,你可以看看独立存储。数据存储在用户/机器的基础上(如您选择),因此您可以为不同的用户存储不同的文件。
你的选择取决于你想要多少信息存储和安全周围。
System.Environment.CurrentDirectory没有给出安装目录,它给出了当前的活动/工作目录。请参阅http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx – 2009-08-12 03:01:35
可以使用得到当前目录:
string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
这是存储与您的.exe文件的一个有效和有益的方式 - 你可以随时浏览使用从您的可执行文件运行相对目录,这意味着你不必担心它的安装位置。或者,如果您希望您的.exe可自由复制到任何目录,则可以考虑将数据存储在众所周知的位置,例如用户的配置文件(用于Windows)中的应用程序设置目录。
Application.StartupPath应该为你做的还是:
private static string GetApplicationPath()
{
return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
}
听起来像是在.net(System.IO.IsolatedStorage)独立的存储功能的完美解决方案。
您通过对象进行访问,路径由.Net控制。它将项目存储在每个登录的本地设置\应用程序数据\隔离存储中。
使用'Environment.SpecialFolder'是最好的方法。 – 2009-08-12 03:20:23
这对我很好。感谢Zack的帮助。 Ĵ – 2009-08-15 03:11:54