0

好的,我知道这很简单,但我忘记了如何去做。我想在一个目录中创建一个文件夹,但如果我这样做"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");
}
4

3 回答 3

2

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

你可以试试这个:

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\\");
于 2013-07-15T19:47:03.373 回答
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

于 2013-07-15T19:49:50.170 回答
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不会将其替换为您的用户路径。

于 2013-07-15T19:51:32.173 回答