2015-10-17 113 views
0

嗨,我已经使用的代码波纹管成功的开始,但是我不知道我这样做,它停止的文件夹下创建文件MessageIO.dat(ProgramFiles)\UniWin Activator DataFile.Create(路径)错误VB.NET

我使用该代码:(结果:仅创建文件夹UniWin Activator Data

Dim UniWinPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "UniWin Activator Data") 
Directory.CreateDirectory(UniWinPath) 

Dim MsgIO = Path.Combine(UniWinPath, "\MessageIO.dat") 
File.Create(MsgIO) 

和使用这样的:(:在命令File.Create错误结果)

Dim UniWinPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "UniWin Activator Data\MessageIO.dat") 
File.Create(UniWinPath) 

和使用这样的:(结果:什么都没有发生)

Dim UniWinPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "UniWin Activator Data") 
Dim MsgIO = Path.Combine(UniWinPath, "\MessageIO.dat") 
File.Create(MsgIO) 

什么是创建一个文件的方式? (我已经拥有管理权限)

+0

第二个代码中的错误是什么? –

+0

检查字符串UniWinPath最后是否不包含反斜杠。这两个字符串合并后可能会出现双黑点 - 我不知道它是否有所作为,但值得一试 –

+0

问题已解决,第二种情况:错误是“无法找到路径的一部分” –

回答

0

您的第一个代码非常好。只需将Dim MsgIO = Path.Combine(UniWinPath, "\MessageIO.dat")更改为Dim MsgIO = Path.Combine(UniWinPath, "MessageIO.dat")即可。 (去掉反斜杠)。 Path.Combine自动添加一个。和往常一样,要访问特殊目录,请确保您拥有管理员权限。最后两个代码不起作用的原因是File.Create在现有目录中创建了一个文件。它不能创建目录本身。

0

组合路径时,不应在开始第二个路径项目时指定“\”字符,因为这将意味着根路径!例如, Path.Combine(“D:\ Folder1”,“\ MessageIO.dat”)将导致“\ MessageIO.dat”。但您必须编写Path.Combine(“D:\ Folder1”,“MessageIO.dat”),它将返回“D:\ Folder1 \ MessageIO.dat”

注意:在Windows 7或更高版本中,像Program Files这样的文件夹需要特殊的权限!检查您的应用程序是否具有此类权限(您可以先测试其他诺曼文件夹,以确保您的代码的其他部分可以)

+0

我会尝试这目前,顺便说一句我已经有app.manifest文件 –

+0

管理员权限,但通过增加1件事情:创建目录,然后创建文件messageio.dat –

+0

我说你必须删除第一个反斜杠在path.combine中开始第二个参数。接受的答案是一样的,你为什么不接受我的? –