好的,我知道这很简单,但我忘记了怎么做。我想在一个目录中创建一个文件夹,但是如果我"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");
}
答案 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
不会替换为你的用户路径。