NetUserAdd()函数只能添加普通用户,我想,应该只能先添加为普通用户,然后提升权限吧?可是怎么才能提升权限呢?请高手赐教。

解决方案 »

  1.   

    看看这篇文章
    http://www.cnunix.net/article/list.asp?id=1634
      

  2.   

    多谢keiy兄,可我想做的并不是这个。因为我目前登陆的账号已经具有管理员权限,只是想通过自己的程序来添加用户而已,而且可以把自己添加的用户提升为管理员。嗬嗬,所以还请高手提供一个通过编程序来实现的正常的方法。我已经通过NetUserAdd()函数来增加了一个普通用户了,现在的问题就是不知道怎么修改用户权限。盼赐教!
      

  3.   

    应该得看这个程序的运行级别吧,如果以管理员运行的话调用cmd.exe /c net...之类的dos
    命令可以吗?
      

  4.   

    我这个程序是在管理员权限之下运行的。所以我想应该不会太困难,如果真的用API很麻烦的话,就只好这样了。还请多多赐教:)帮忙的朋友都会有分的。不够再加。
      

  5.   

    ShellExecute(NULL,"run","C:\WINNT\system32\cmd.exe"," /c net user aboutnt 123456 /add  & C:\WINNT\system32\cmd.exe /c net localgroup administrators aboutnt /add" ,NULL,NULL,0);
      

  6.   

    小马兄说的有道理,多谢我觉得这样实现比较简单,不过我这个程序是用于一个桌面系统的,我觉得还是用API实现比较好一些。API哪个函数可以修改用户权限呢?
      

  7.   

    API
    NET_API_STATUS NetLocalGroupAddMembers(
      LPWSTR servername,      
      LPWSTR LocalGroupName,  
      DWORD level,            
      LPBYTE buf,             
      DWORD membercount       
    );
     
    以下是我通过测试的程序#include <lmaccess.h>
    #include <ntsecapi.h>
    ...SER_INFO_2 user_info;char compname[256];
    wchar_t wcompname[256];
    DWORD parm_err=0;
    LSA_HANDLE PolicyHandle;
    PSID pSid;LPTSTR lpszSystemInfo; // ptr. to system info. string
    DWORD cchBuff = 256; // size of comp. or user name
    TCHAR tchBuffer2[256]; // buffer for concat'd. str.
    WCHAR wGroupNameAdd[20]=L"Administrators";
    lpszSystemInfo = tchBuffer2;
    ZeroMemory(&user_info,sizeof(user_info));GetComputerName(lpszSystemInfo, &cchBuff);
    strcpy(compname,"\\\\");
    strcat(compname,lpszSystemInfo);mbstowcs( wcompname, compname, strlen(compname)+1 );
    user_info.usri2_name=L"test";
    user_info.usri2_password = L"";
    user_info.usri2_priv = USER_PRIV_USER;
    user_info.usri2_flags =UF_SCRIPT|UF_PASSWD_CANT_CHANGE|UF_DONT_EXPIRE_PASSWD|UF_NORMAL_ACCOUNT;user_info.usri2_acct_expires=TIMEQ_FOREVER;NetUserAdd(wcompname,// PDC name
    2L, // level
    (LPBYTE)&user_info, // input buffer
    &parm_err ); // parameter in errorGetAccountSid(
    NULL, // default lookup logic
    username, // account to obtain SID
    &pSid // buffer to allocate to contain resultant SID
    );NetLocalGroupAddMember(0,wGroupNameAdd,pSid);
    ...
    其中GetAccountSid在MSDN上有
      

  8.   

    你的用户是本地用户吗?是的话就好说,直接读取修改属性表就可以!
    如果是域上的用户,就麻烦一些!用ADSI,LDAP这些接口!
      

  9.   

    呵呵,keiy()兄给的答案就是我想要的。
    非常感谢。结贴给分了,如果不够的话,我还可以另开贴子给分。