如何获取和使用exe的当前目录?

时间:2013-07-14 14:45:04

标签: .net vb.net visual-studio-2010 bytearray

此代码有效:

Public Sub Install()
    progDirectory = )
    My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", My.Resources.Resource, False)
    Unzip(SelFolder & "\Resource.zip", SelFolder)
End Sub

但这不是:

Dim progDirectory As 

Public Sub Install()
    progDirectory = Environment.GetFolderPath(System.Environment.CurrentDirectory)
    My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", progDirectory, False)
    Unzip(SelFolder & "\Resource.zip", SelFolder)
End Sub

我想要完成的基本要点是找到exe的当前目录/路径,然后从该目录中找到“Resource.zip”文件。

代码的顶部将.zip文件写入选择位置(SelFolder)解压缩,然后从该文件夹中删除Resource.zip。

代码的第二部分旨在做同样的事情,但是使用目录中的zip而不是app资源,因为我希望它们是分开的。

我得到的错误是:'String'类型的值不能转换为'Byte的1维数组'。在这一行:

My.Computer.FileSystem.WriteAllBytes(SelFolder&“\ Resource.zip”,progDirectory,False)

2 个答案:

答案 0 :(得分:0)

使用:File.Copy(SelFolder & "\Resource.zip", progDirectory)

而不是:My.Computer.FileSystem.WriteAllBytes(SelFolder & "\Resource.zip", progDirectory, False)

答案 1 :(得分:0)

可执行文件的当前路径可以通过属性AppDomain.CurrentDomain.BaseDirectory获取。

还有其他方法可以获得它,但我们在几年前发现编写在多个平台(包括Windows Mobile)上执行的代码时,这是检索信息最安全的方法。

因此,您可以将progDirectory分配更改为:

    progDirectory = AppDomain.CurrentDomain.BaseDirectory