Click here to Skip to main content
11,718,589 members (89,304 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: C++ VB.NET convert API
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:
#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;
    //  Object attributes are reserved, so initialize to zeros.
    ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));
    //  Get a handle to the Policy object.
    ntsResult = LsaOpenPolicy(
        NULL,    // local machine
    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(
        dwRetCode = LsaNtStatusToWinError(ntsResult);
        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(
        dwRetCode = LsaNtStatusToWinError(ntsResult);
    if (dwRetCode != ERROR_SUCCESS)
        wprintf(L"Failed call to LsaStorePrivateData %lu\n",
    return dwRetCode;

Also I need to know how to define the API call for:

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

Posted 18-Sep-12 13:29pm
Wes Aday at 18-Sep-12 20:12pm
Okay.... so what is it that you need help with? should show you how to pinvoke those functions.
Sergey Alexandrovich Kryukov at 18-Sep-12 20:53pm
Your "not been able to complete the task" is not really informative. As the question is not asked and no problem is indicated, I doubt someone will try to dig into it. People have better ways of spending their time.
jkirkerx at 18-Sep-12 22:08pm
If it was simpler, not accessing the policy object, I would start you off, but help is voluntary, and I don't want to do research on the object requirements in vb. That could take me hours.
Sergey Alexandrovich Kryukov at 18-Sep-12 22:38pm
Agree. Moreover, if it was ten minutes, it would not be well spent minutes. :-)
jkirkerx at 19-Sep-12 0:11am
I have enough to do right now, and even if I did translate it, I would get like 20 more questions, like how do I use it now. It would probably condense down pretty small, since I don't have to measure any lengths.

Guess it serves 2 uses, one to set the password, and two to clear the password.

So what's up with that crater in Siberia, that's loaded with hardened diamonds, they say a trillion carats are in there. The molecule size of the diamonds are larger than normal, and 10 times harder, because of the heat and pressure from the meteor on top of the existing diamonds below.

Back tomorrow, 9PM here now.
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

Searching all over the place and found a bit of code just as I wanted it.



This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 215
1 F-ES Sitecore 210
2 Maciej Los 140
3 Jochen Arndt 120
4 Andy Lanng 115
0 OriginalGriff 535
1 Maciej Los 529
2 Richard MacCutchan 440
3 CHill60 415
4 F-ES Sitecore 415

Advertise | Privacy | Mobile
Web02 | 2.8.150901.1 | Last Updated 3 Oct 2012
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100