简单的如何制作应用程序目录路径

时间:2013-07-15 19:45:08

标签: c# directory

好的,我知道这很简单,但我忘记了怎么做。我想在一个目录中创建一个文件夹,但是如果我"C:\Users\George\AppData\Roaming\myprogram",这只对我来说它不适用于我发送给它的每个人

我试过了"C:\Users\[User]\AppData\Roaming\Myprogram",但是它说拒绝访问权限,那么我可以用它来为每个人服务吗?

以下是我用来执行此操作的代码段,如果有帮助的话:

public Form2()
{
    InitializeComponent();

    Directory.CreateDirectory(@"C:\Users\[User]\AppData\Roaming\SkypeAdmin");
    Directory.CreateDirectory(@"C:\Users\[User]\AppData\Roaming\SkypeAdmin\mem");
}

我试过了:

public Form2()
{
    InitializeComponent();

    Directory.CreateDirectory(@"C:\Users\User\AppData\Roaming\SkypeAdmin");
    Directory.CreateDirectory(@"C:\Users\User\AppData\Roaming\SkypeAdmin\mem");
}

3 个答案:

答案 0 :(得分:2)

您的方法预定义了文件夹的路径,因此该位置仅对您和具有指定loacation的任何其他人有效。

你可以试试这个:

public Form1()
{
    InitializeComponent();
    DirectoryInfo di  =  Directory.CreateDirectory(skypeAdminPath);
    DirectoryInfo di2  =  Directory.CreateDirectory(skypeMemPath);
}

string skypeAdminPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "SkypeAdmin\\";

string skypeMemPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "SkypeAdmin\\mem\\";

使用Path.Combine

string skypeAdminPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SkypeAdmin\\");
string skypeMemPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SkypeAdmin\\mem\\");

答案 1 :(得分:2)

您可以使用CommonAppDataPath

string path = Application.CommonAppDataPath;//for folder with version

这可能会更改您的应用程序的每个版本,如果您不想要此行为,并且您希望Same Directory用于您的应用程序的所有版本,则可以使用此

string path = Directory.GetParent(Application.CommonAppDataPath);

当您的代码在行上方执行时,该目录将随时可用,这是按需创建的。

注意: 我假设您要为所有用户创建一些目录并使用它。您可以使用共享目录并从任何用户访问它,而不是这样做。

这就是示例CommonAppData路径的样子 C:\ProgramData\MyCompany\WindowsFormsApplicationTest\1.0.0.0

通常CommonAppDataBase\CompanyName\ProductName\Version

答案 2 :(得分:0)

您需要使用Enviroment.GetFolderPath

Directory.CreateDirectory(Path.Combine(
        Enviroment.GetFolderPath(Enviroment.SpecialFolder.ApplicationData),
        @"\SkypeAdmin\"));
Directory.CreateDirectory(Path.Combine(
        Enviroment.GetFolderPath(Enviroment.SpecialFolder.ApplicationData),
        @"\SkypeAdmin\mem\"));

这完全符合(我认为)你的意思。您的解决方案不起作用,因为系统中没有名为[User]User的文件夹,因此您无法在其中创建文件夹,并且Directory.CreateDirectory不会替换为你的用户路径。