diff --git a/reactos/dll/win32/netapi32/netapi32.spec b/reactos/dll/win32/netapi32/netapi32.spec index 751163e9fc3..e491d029bf5 100644 --- a/reactos/dll/win32/netapi32/netapi32.spec +++ b/reactos/dll/win32/netapi32/netapi32.spec @@ -99,7 +99,7 @@ @ stub I_NetlogonComputeClientDigest @ stub I_NetlogonComputeServerDigest @ stub I_NetlogonGetTrustRid -@ stub NetAddAlternateComputerName +@ stdcall NetAddAlternateComputerName(wstr wstr wstr wstr long) @ stdcall NetAlertRaise(wstr ptr long) @ stdcall NetAlertRaiseEx(wstr ptr long wstr) @ stdcall NetApiBufferAllocate(long ptr) @@ -161,7 +161,7 @@ @ stdcall NetGroupGetUsers(wstr wstr long ptr long ptr ptr ptr) @ stdcall NetGroupSetInfo(wstr wstr long ptr ptr) @ stdcall NetGroupSetUsers(wstr wstr long ptr long) -@ stub NetJoinDomain +@ stdcall NetJoinDomain(wstr wstr wstr wstr wstr long) @ stdcall NetLocalGroupAdd(wstr long ptr ptr) @ stdcall NetLocalGroupAddMember(wstr wstr ptr) @ stdcall NetLocalGroupAddMembers(wstr wstr long ptr long) @@ -184,8 +184,8 @@ @ stub NetRegisterDomainNameChangeNotification @ stub NetRemoteComputerSupports @ stdcall NetRemoteTOD(wstr ptr) -@ stub NetRemoveAlternateComputerName -@ stub NetRenameMachineInDomain +@ stdcall NetRemoveAlternateComputerName(wstr wstr wstr wstr long) +@ stdcall NetRenameMachineInDomain(wstr wstr wstr wstr long) @ stub NetReplExportDirAdd @ stub NetReplExportDirDel @ stub NetReplExportDirEnum @@ -223,7 +223,7 @@ @ stdcall NetSessionDel(wstr wstr wstr) @ stdcall NetSessionEnum(wstr wstr wstr long ptr long ptr ptr ptr) @ stdcall NetSessionGetInfo(wstr wstr wstr long ptr) -@ stub NetSetPrimaryComputerName +@ stdcall NetSetPrimaryComputerName(wstr wstr wstr wstr long) @ stdcall NetShareAdd(wstr long ptr ptr) @ stdcall NetShareCheck(wstr wstr ptr) @ stdcall NetShareDel(wstr wstr long) @@ -233,7 +233,7 @@ @ stdcall NetShareGetInfo(wstr wstr long ptr) @ stdcall NetShareSetInfo(wstr wstr long ptr ptr) @ stdcall NetStatisticsGet(wstr wstr long long ptr) -@ stub NetUnjoinDomain +@ stdcall NetUnjoinDomain(wstr wstr wstr long) @ stub NetUnregisterDomainNameChangeNotification @ stdcall NetUseAdd(wstr long ptr ptr) @ stdcall NetUseDel(wstr wstr long) diff --git a/reactos/dll/win32/netapi32/wksta_new.c b/reactos/dll/win32/netapi32/wksta_new.c index 3878dbefd0e..951a3857a9c 100644 --- a/reactos/dll/win32/netapi32/wksta_new.c +++ b/reactos/dll/win32/netapi32/wksta_new.c @@ -138,9 +138,49 @@ WKSSVC_IMPERSONATE_HANDLE_unbind(WKSSVC_IMPERSONATE_HANDLE pszSystemName, } +NET_API_STATUS +WINAPI +NetAddAlternateComputerName( + _In_opt_ LPCWSTR Server, + _In_ LPCWSTR AlternateName, + _In_opt_ LPCWSTR DomainAccount, + _In_opt_ LPCWSTR DomainAccountPassword, + _In_ ULONG Reserved) +{ + PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword; + handle_t BindingHandle; + NET_API_STATUS status; + + TRACE("NetAddAlternateComputerName(%s %s %s %s 0x%lx)\n", + debugstr_w(Server), debugstr_w(AlternateName), debugstr_w(DomainAccount), + debugstr_w(DomainAccountPassword), Reserved); + + /* FIXME */ + BindingHandle = NULL; + EncryptedPassword = NULL; + + RpcTryExcept + { + status = NetrAddAlternateComputerName(BindingHandle, + (PWSTR)Server, + (PWSTR)AlternateName, + (PWSTR)DomainAccount, + EncryptedPassword, + Reserved); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + #if 0 NET_API_STATUS -NET_API_FUNCTION +WINAPI NetGetJoinInformation( LPCWSTR Server, LPWSTR *Name, @@ -171,6 +211,206 @@ NetGetJoinInformation( #endif +NET_API_STATUS +WINAPI +NetJoinDomain( + _In_ LPCWSTR lpServer, + _In_ LPCWSTR lpDomain, + _In_ LPCWSTR lpAccountOU, + _In_ LPCWSTR lpAccount, + _In_ LPCWSTR lpPassword, + _In_ DWORD fJoinOptions) +{ + PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword; + handle_t BindingHandle; + NET_API_STATUS status; + + TRACE("NetJoinDomain(%s %s %s %s 0x%lx)\n", + debugstr_w(lpServer), debugstr_w(lpDomain), debugstr_w(lpAccountOU), + debugstr_w(lpAccount), debugstr_w(lpPassword), fJoinOptions); + + /* FIXME */ + BindingHandle = NULL; + EncryptedPassword = NULL; + + RpcTryExcept + { + status = NetrJoinDomain2(BindingHandle, + (PWSTR)lpServer, + (PWSTR)lpDomain, + (PWSTR)lpAccountOU, + (PWSTR)lpAccount, + EncryptedPassword, + fJoinOptions); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + +NET_API_STATUS +WINAPI +NetRemoveAlternateComputerName( + _In_opt_ LPCWSTR Server, + _In_ LPCWSTR AlternateName, + _In_opt_ LPCWSTR DomainAccount, + _In_opt_ LPCWSTR DomainAccountPassword, + _In_ ULONG Reserved) +{ + PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword; + handle_t BindingHandle; + NET_API_STATUS status; + + TRACE("NetRemoveAlternateComputerName(%s %s %s %s 0x%lx)\n", + debugstr_w(Server), debugstr_w(AlternateName), debugstr_w(DomainAccount), + debugstr_w(DomainAccountPassword), Reserved); + + /* FIXME */ + BindingHandle = NULL; + EncryptedPassword = NULL; + + RpcTryExcept + { + status = NetrRemoveAlternateComputerName(BindingHandle, + (PWSTR)Server, + (PWSTR)AlternateName, + (PWSTR)DomainAccount, + EncryptedPassword, + Reserved); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + +NET_API_STATUS +WINAPI +NetRenameMachineInDomain( + _In_ LPCWSTR lpServer, + _In_ LPCWSTR lpNewMachineName, + _In_ LPCWSTR lpAccount, + _In_ LPCWSTR lpPassword, + _In_ DWORD fRenameOptions) +{ + PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword; + handle_t BindingHandle; + NET_API_STATUS status; + + TRACE("NetRenameMachineInDomain(%s %s %s %s 0x%lx)\n", + debugstr_w(lpServer), debugstr_w(lpNewMachineName), debugstr_w(lpAccount), + debugstr_w(lpPassword), fRenameOptions); + + /* FIXME */ + BindingHandle = NULL; + EncryptedPassword = NULL; + + RpcTryExcept + { + status = NetrRenameMachineInDomain2(BindingHandle, + (PWSTR)lpServer, + (PWSTR)lpNewMachineName, + (PWSTR)lpAccount, + EncryptedPassword, + fRenameOptions); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + +NET_API_STATUS +WINAPI +NetSetPrimaryComputerName( + _In_opt_ LPCWSTR Server, + _In_ LPCWSTR PrimaryName, + _In_opt_ LPCWSTR DomainAccount, + _In_opt_ LPCWSTR DomainAccountPassword, + _In_ ULONG Reserved) +{ + PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword; + handle_t BindingHandle; + NET_API_STATUS status; + + TRACE("NetSetPrimaryComputerName(%s %s %s %s %lu)\n", + debugstr_w(Server), debugstr_w(PrimaryName), debugstr_w(DomainAccount), + debugstr_w(DomainAccountPassword), Reserved); + + /* FIXME */ + BindingHandle = NULL; + EncryptedPassword = NULL; + + RpcTryExcept + { + status = NetrSetPrimaryComputerName(BindingHandle, + (PWSTR)Server, + (PWSTR)PrimaryName, + (PWSTR)DomainAccount, + EncryptedPassword, + Reserved); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + +NET_API_STATUS +WINAPI +NetUnjoinDomain( + _In_ LPCWSTR lpServer, + _In_ LPCWSTR lpAccount, + _In_ LPCWSTR lpPassword, + _In_ DWORD fUnjoinOptions) +{ + PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword; + handle_t BindingHandle; + NET_API_STATUS status; + + TRACE("NetUnjoinDomain(%s %s %s %s 0x%lx)\n", + debugstr_w(lpServer), debugstr_w(lpAccount), + debugstr_w(lpPassword), fUnjoinOptions); + + /* FIXME */ + BindingHandle = NULL; + EncryptedPassword = NULL; + + RpcTryExcept + { + status = NetrUnjoinDomain2(BindingHandle, + (PWSTR)lpServer, + (PWSTR)lpAccount, + EncryptedPassword, + fUnjoinOptions); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + status = I_RpcMapWin32Status(RpcExceptionCode()); + } + RpcEndExcept; + + return status; +} + + NET_API_STATUS WINAPI NetUseAdd(