2013-07-10 4 views
3

Я пытаюсь запустить программу Go с правами администратора в Windows. Как sudo в Linux. Для этого я запускаю cmd как Administrator. Я также попробовал команду администратора runas.Запуск программы в качестве администратора

Проблема os.Getuid() функция возвращает -1. Программа проверяет ее, и если она не указана 0, у вас нет прав администратора.

Фрагмент кода из программы Go Gor (listener.go):

if os.Getuid() != 0 { 
    fmt.Println("Please start the listener as root or sudo!") 
    fmt.Println("This is required since listener sniff traffic on given port.") 
    os.Exit(1) 
} 

Есть ли решение этой проблемы?

Благодаря

+0

Вы пытались «Geteuid» для эффективного uid? – Volker

+0

Да, это тоже -1. – Xelom

ответ

4

Флагманская версия Go была разработана принципала Go авторов для Linux/Дарвина, с архитектурой, что позволило для других операционных систем. Позже другие пришли и портировали Go в другие операционные системы, такие как Windows. Некоторые из портов Windows являются ошибочными и неполными. Кроме того, некоторые функции Linux/Darwin, такие как модель безопасности, не имеют прямого аналога в Windows.

syscall_windows.go:

. . . 
// TODO(brainman): fix all needed for os 
. . . 
func Getuid() (uid int) { return -1 } 
. . . 

Открыть новый выпуск на Go issue tracker.

+0

Спасибо. Ты прав! – Xelom

Смежные вопросы