2

我是 Go 编程新手。对于我的一个问题,我真的很想得到您的帮助。

我需要在一个文件上进行安装,该文件的可执行文件(在 Windows 中)是在一个名为GOPATH\bin的文件夹中创建的。

到目前为止,我通常遵循常规:go install <file>.go ---> <file>.exe。但是,这次似乎在执行之后 <file>.exe,exe没有完成执行一段时间,当我再次安装时出现以下错误。

C:\Users\Rahul\Desktop\Compilers\src\cs553s2013\mylexer>go install is_digit.go go install command-line-arguments: open C:\Users\Rahul\Desktop\Compilers\bin\is_digit.exe: 访问被拒绝。

4

1 回答 1

1

请参阅http://grokbase.com/t/gg/golang-nuts/135fyje5d9/go-nuts-go-build-access-is-denied-windows-7x64

完全不知道为什么,但上面的建议奏效了。必须在 Windows 7 上启用“应用程序体验”Windows 服务才能解决此问题。

我禁用了此服务,并且在我的项目的二进制文件上看到了类似奇怪的 2-3 分钟“权限被拒绝”(在 Windows 资源管理器视图中,通过 $GOPATH/bin 的 alt+F2 刷新后,该二进制文件也会消失Eclipse + Goclipse 构建我的二进制文件的 $GOPATH/bin)。我注意到,在执行之后,在二进制文件最终消失之前,它被更改为由某个未知用户拥有(在资源管理器中,它不属于编译用户、管理员甚至 SYSTEM)。

我只能推测——也许 Windows 会在文件系统上保留任何 .exe,如果它在没有向 Windows 内核提供某种未记录的“一切正常”状态的情况下退出,假设它“崩溃”,那么应用程序体验服务可以发送它作为 Microsoft 的诊断数据——如果该服务被禁用,则应用程序体验服务无法完成 NTFS 或资源管理器正在等待的任何握手,以允许文件被后续编译覆盖。因此,golang .exe 就坐在那里,具有提升的权限,具有一些系统/未定义的用户,Eclipse 无法删除,直到 Explorer 执行某些操作将其标记为绝对已死。

于 2017-04-27T05:38:47.357 回答