Перейти установить на Windows: "Доступ запрещен"

Я новичок в программировании на Go. Я бы очень хотел вашей помощи в отношении одной из моих проблем.

Мне нужно выполнить go install для файла, исполняемый файл которого (в Windows) создается в папке с именем GOPATH \ bin.

До сих пор я обычно следовал за рутиной: go install <file>.go ---> <file>.exe, Однако на этот раз кажется, что после исполнения <file>.exeexe не завершает выполнение в течение некоторого времени, и я получаю следующую ошибку при повторной установке.

C: \ Users \ Rahul \ Desktop \ Compilers \ src \ cs553s2013 \ mylexer> перейти к установке is_digit.go go установить аргументы командной строки: открыть C:\Users\Rahul\Desktop\Compilers\bin\is_ digit.exe: доступ отказано.

1 ответ

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

Абсолютно не знаю почему, но вышеприведенное предложение сработало. Чтобы решить эту проблему, необходимо включить службу Windows "Application Experience" в Windows 7.

У меня была отключена эта служба, и я видел похожее странное 2-3-минутное время "Отказано в разрешении" в бинарном файле моего проекта (бинарный файл также исчезал бы после обновления через alt+F2 из $GOPATH/bin из представления Windows Explorer $GOPATH/bin, где Eclipse + Goclipse собирал мой бинарный файл). Я заметил, что сразу после выполнения и до того, как бинарный файл окончательно исчез, он был изменен на принадлежащий какому-то неизвестному пользователю (в Проводнике он не принадлежит пользователю, выполняющему компиляцию, администратору или даже SYSTEM).

Я могу только строить предположения - возможно, Windows сохраняет какой-либо.exe в файловой системе, если он вышел без какого-либо недокументированного статуса "все в порядке" в ядре Windows, предполагая, что он "разбился", поэтому служба Application Experience может отправить его в качестве диагностических данных для Microsoft - и если эта служба отключена, служба Application Experience не может завершить любое рукопожатие NTFS или Explorer, которое ожидает перезаписи файла последующими компиляциями. Таким образом, golang .exe находится там, с повышенными разрешениями, с каким-то системным / неопределенным пользователем, не удаляемым Eclipse, пока Explorer не сделает что-то, чтобы пометить его как абсолютно мертвый.

Другие вопросы по тегам