Я только что столкнулся с этой проблемой, и обнаружил, что если я добавлю имя удаленного компьютера в имя пользователя, это сработает. (На самом деле я этого не понимал, у нас уже было другое место в коде, которое делало это, и я знал, что это возможно, и наконец понял разницу.)
Так, например:
WNetAddConnection2(&nr, "password", "SomeComputer\\Username", 0);
Я не делаю никаких специальных вызовов, таких как LogonUser или ImpersonateLoggedOnUser.
Это служба, работающая под учетной записью SYSTEM.
Я не пробовал использовать учетную запись SomeComputer \ Administrator, но в любом случае это не совсем хорошая практика. Я использую обычную учетную запись пользователя на SomeComputer.