Results 1 to 8 of 8

Thread: [RESOLVED] convert C++ to Visual Basic help

Threaded View

  1. #1

    Thread Starter
    New Member Rodent2008's Avatar
    Join Date
    Jul 2008
    Posts
    10

    Resolved [RESOLVED] convert C++ to Visual Basic help

    Hi, I need to convert some C++ code into Visual Basic code but have not been able to complete the task.
    Can anyone help.

    Here is the C++ code:
    Code:
    #include <windows.h>
    #include <stdio.h>
    
    DWORD UpdateDefaultPassword(WCHAR * pwszSecret)
    {
    
        LSA_OBJECT_ATTRIBUTES ObjectAttributes;
        LSA_HANDLE LsaPolicyHandle = NULL;
    
        LSA_UNICODE_STRING lusSecretName;
        LSA_UNICODE_STRING lusSecretData;
        USHORT SecretNameLength;
        USHORT SecretDataLength;
    
        NTSTATUS ntsResult = STATUS_SUCCESS;
        DWORD dwRetCode = ERROR_SUCCESS;
    
        //  Object attributes are reserved, so initialize to zeros.
        ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));
    
        //  Get a handle to the Policy object.
        ntsResult = LsaOpenPolicy(
            NULL,    // local machine
            &ObjectAttributes, 
            POLICY_CREATE_SECRET,
            &LsaPolicyHandle);
    
        if( STATUS_SUCCESS != ntsResult )
        {
            //  An error occurred. Display it as a win32 error code.
            dwRetCode = LsaNtStatusToWinError(ntsResult);
            wprintf(L"Failed call to LsaOpenPolicy %lu\n", dwRetCode);
            return dwRetCode;
        } 
    
        //  Initialize an LSA_UNICODE_STRING for the name of the
        //  private data ("DefaultPassword").
        SecretNameLength = (USHORT)wcslen(L"DefaultPassword");
        lusSecretName.Buffer = L"DefaultPassword";
        lusSecretName.Length = SecretNameLength * sizeof(WCHAR);
        lusSecretName.MaximumLength =
            (SecretNameLength+1) * sizeof(WCHAR);
    
        //  If the pwszSecret parameter is NULL, then clear the secret.
        if( NULL == pwszSecret )
        {
            wprintf(L"Clearing the secret...\n");
            ntsResult = LsaStorePrivateData(
                LsaPolicyHandle,
                &lusSecretName,
                NULL);
            dwRetCode = LsaNtStatusToWinError(ntsResult);
        }
        else
        {
            wprintf(L"Setting the secret...\n");
            //  Initialize an LSA_UNICODE_STRING for the value
            //  of the private data. 
            SecretDataLength = (USHORT)wcslen(pwszSecret);
            lusSecretData.Buffer = pwszSecret;
            lusSecretData.Length = SecretDataLength * sizeof(WCHAR);
            lusSecretData.MaximumLength =
                (SecretDataLength+1) * sizeof(WCHAR);
            ntsResult = LsaStorePrivateData(
                LsaPolicyHandle,
                &lusSecretName,
                &lusSecretData);
            dwRetCode = LsaNtStatusToWinError(ntsResult);
        }
    
        LsaClose(LsaPolicyHandle);
    
        if (dwRetCode != ERROR_SUCCESS)
            wprintf(L"Failed call to LsaStorePrivateData %lu\n",
                dwRetCode);
        
        return dwRetCode;
    
    }
    Also I need to know how to define the API call for:
    LsaNtStatusToWinError
    LsaOpenPolicy
    LsaStorePrivateData
    ZeroMemory
    LsaNtStatusToWinError

    So basically I need this function to work with Visual Basic 2010.

    Regards
    Rodney
    Last edited by Rodent2008; Sep 16th, 2012 at 07:35 PM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width