Click here to Skip to main content
Sign Up to vote bad
good
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;
 
    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
Posted 18 Sep '12 - 13:29

Comments
Wes Aday - 18 Sep '12 - 20:12
Okay.... so what is it that you need help with? www.pinvoke.net should show you how to pinvoke those functions.
Sergey Alexandrovich Kryukov - 18 Sep '12 - 20:53
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. --SA
jkirkerx - 18 Sep '12 - 22:08
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 - 18 Sep '12 - 22:38
Agree. Moreover, if it was ten minutes, it would not be well spent minutes. :-) --SA
jkirkerx - 19 Sep '12 - 0:11
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.

2 solutions

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

  Print Answers RSS
Your Filters
Interested
Ignored
     
0 Sergey Alexandrovich Kryukov 409
1 Mahesh Bailwal 353
2 Maciej Los 260
3 CPallini 245
4 Aarti Meswania 173
0 Sergey Alexandrovich Kryukov 9,162
1 OriginalGriff 7,194
2 CPallini 3,923
3 Rohan Leuva 3,176
4 Maciej Los 2,633


Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 3 Oct 2012
Copyright © CodeProject, 1999-2013
All Rights Reserved. Terms of Use
Layout: fixed | fluid