NetUserAdd

Тема в разделе "WASM.WIN32", создана пользователем nerezus, 18 июл 2009.

  1. nerezus

    nerezus New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    89
    Можно пример с ним?
    У меня на XP ругается, что "Неверный дескриптор", а на 2008 просто падает.

    Код прилагаю(на C#):
    Код (Text):
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.Text.RegularExpressions;
    5. using System.Runtime.InteropServices;
    6. using ComTypes = System.Runtime.InteropServices.ComTypes;
    7. using Microsoft.Win32;
    8. namespace WindowsFormsApplication1
    9. {
    10.     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    11.     internal struct USER_INFO_1
    12.     {
    13.         [MarshalAs(UnmanagedType.LPWStr)]
    14.         public string sUsername;
    15.         [MarshalAs(UnmanagedType.LPWStr)]
    16.         public string sPassword;
    17.         public uint uiPasswordAge;
    18.         public uint uiPriv;
    19.         [MarshalAs(UnmanagedType.LPWStr)]
    20.         public string sHome_Dir;
    21.         [MarshalAs(UnmanagedType.LPWStr)]
    22.         public string sComment;
    23.         public uint uiFlags;
    24.         [MarshalAs(UnmanagedType.LPWStr)]
    25.         public string sScript_Path;
    26.     }
    27.     public class UACreator
    28.     {
    29.         [DllImport("netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    30.         private static extern int NetUserAdd(
    31.              [MarshalAs(UnmanagedType.LPWStr)] string servername,
    32.              UInt32 level,
    33.              IntPtr userInfo,
    34.              out UInt32 parm_err);
    35.         public static string UserAdd(string name, string password)
    36.         {
    37.             USER_INFO_1 user = new USER_INFO_1();
    38.             user.sUsername = name.Trim();
    39.             user.sPassword = password;
    40.             user.uiPriv = 1;
    41.             user.sScript_Path = "";
    42.             user.sHome_Dir = "";
    43.             user.sComment = "Autogenerated user account";
    44.             IntPtr userPtr = Marshal.AllocHGlobal(Marshal.SizeOf(user));
    45.             Marshal.StructureToPtr(user, userPtr, true);
    46.             uint outVal = 0;
    47.             int result = NetUserAdd("", 1, userPtr, out outVal);
    48.             if (result != 0)
    49.             {
    50.                 return new System.ComponentModel.Win32Exception(result).Message;
    51.             }
    52.             else
    53.             {
    54.                 return "Success";
    55.             }
    56.         }
    57.     }
    58. }
    59.  
    60. //MessageBox.Show(UserAdd("bebe", "bebe"));
     
  2. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    http://msdn.microsoft.com/en-us/library/aa370649%28VS.85%29.aspx
     
  3. nerezus

    nerezus New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    89
    Код (Text):
    1. C:\!Docs\!!projects\NetUserAdd\Release>NetUserAdd.exe bebe bebe
    2. A system error has occurred: 53
    WTF?
     
  4. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    http://support.microsoft.com/kb/822345
     
  5. nerezus

    nerezus New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    89
    В том числе и на 2008 на свежеустановленной от админа. Та же самая ошибка (
     
  6. nerezus

    nerezus New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    89
    Update: SP3 и все апдейты есть на XP.
    Как и на 2008(лиценз.)
    Но ошибка имеет место быть.
     
  7. niakris

    niakris Дмитрий

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    45
    Работает на XP SP2 :)