My.Computer.Filesystem.WriteAllBytes를 사용하여 내 응용 프로그램의 리소스에 저장된 실행 파일을 시작 디렉토리에 씁니다. 실행 파일을 실행 한 후 삭제합니다. 모든 것이 잘 작동합니다. 그러나 아무 이유없이 UnauthorizedAccessException을 무작위로 가져옵니다. 예외가 발생하면 문제없이 수동으로 파일을 삭제할 수 있습니다.IO.File.Delete 무작위 UnauthorizedAccessException
' Convert MP3
' First, copy out converter
Dim Path = New IO.FileInfo(SoundPath)
Try
My.Computer.FileSystem.WriteAllBytes(Application.StartupPath + "\converter.exe", My.Resources.madplay, False)
Catch ex As Exception
MessageBox.Show(ex.ToString, "Report", MessageBoxButtons.OK)
Exit Sub
End Try
' Set up process
Dim MAD As New Process
' Set process info
Dim output As String = IO.Path.GetFileNameWithoutExtension(Path.FullName) + ".wav"
Dim input As String = Path.FullName
Dim adjust As String = barVolumeAdjust.Value.ToString
Dim hz As String = "15000"
With (MAD.StartInfo)
.FileName = Application.StartupPath + "\converter.exe"
.Arguments = "-v -a " + adjust + " -R " + hz + " -o """ + output + """ """ + input + """"
.UseShellExecute = False
.RedirectStandardInput = True
.RedirectStandardError = True
.RedirectStandardOutput = True
.CreateNoWindow = True
End With
' Start
MAD.Start()
' Update title with output
Dim Line As String = MAD.StandardError.ReadLine
While Not Line Is Nothing
Me.Text = Line
Line = MAD.StandardError.ReadLine
End While
' Stop
MAD.Close()
' Delete MAD
Try
IO.File.Delete(Application.StartupPath + "\converter.exe")
Catch ex As Exception
MessageBox.Show(ex.ToString, "Report", MessageBoxButtons.OK)
End Try
은 무엇 저를 당혹스럽게하는 것은 말 그대로 가 실행을 쓴 단지 것을, 그리고 아무것도 가능성을 사용하고있을 수 없었다 : 여기에 전체 코드입니다. 파일 속성을 검사했는데 읽기 전용이 아닙니다. 내 응용 프로그램도 관리자 권한으로 실행됩니다. 무엇이 문제 일 수 있습니까?
아, 나는 그것을 간과했다는 것을 믿을 수 없습니다. 나는 MAD.Close()를 MAD로 대체했다. WaitForExit()와 모두 잘 보인다! 감사! – Steven