Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NetUserAdd - параметр задан неверно 
:(
    Опции темы
nerezus
Дата 18.7.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Пишет, что параметр задан неверно (

Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using ComTypes = System.Runtime.InteropServices.ComTypes;
using Microsoft.Win32;





[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        private struct USER_INFO_1 {
            [MarshalAs(UnmanagedType.LPWStr)]
            public string sUsername;
            [MarshalAs(UnmanagedType.LPWStr)]
            public string sPassword;
            public uint uiPasswordAge;
            public uint uiPriv;
            [MarshalAs(UnmanagedType.LPWStr)]
            public string sHome_Dir;
            [MarshalAs(UnmanagedType.LPWStr)]
            public string sComment;
            public uint uiFlags;
            [MarshalAs(UnmanagedType.LPWStr)]
            public string sScript_Path;
        }

        [DllImport("netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern int NetUserAdd(
             [MarshalAs(UnmanagedType.LPWStr)] string servername,
             UInt32 level,
             USER_INFO_1 userInfo,
             out UInt32 parm_err);

        public static string UserAdd(string name, string password) {
            USER_INFO_1 user = new USER_INFO_1();
            user.sUsername = name.Trim();
            user.sPassword = password;
            user.uiPriv = 1;
            user.sScript_Path = "";
            user.sHome_Dir = "";
            user.sComment = "Autogenerated user account";
            uint outVal = 0;
            int result = NetUserAdd("", 1, user, out outVal);
            if (result != 0) {
                return new System.ComponentModel.Win32Exception(result).Message;
            } else {
                return "Success";
            }
        }







MessageBox.Show(UserAdd("bebe", "bebe"));


NetUserAdd Function: http://msdn.microsoft.com/en-us/library/aa370649(VS.85).aspx
USER_INFO_1 Structure: http://msdn.microsoft.com/en-us/library/aa371109(VS.85).aspx
Пример на VB.NET: http://www.pinvoke.net/default.aspx/netapi32.NetUserAdd

Это сообщение отредактировал(а) nerezus - 18.7.2009, 11:25


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
diadiavova
Дата 18.7.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Код

[DllImport("netapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
private static extern int NetUserAdd(
     [MarshalAs(UnmanagedType.LPWStr)] string servername,
     UInt32 level,
     IntPtr userInfo,
     out UInt32 parm_err);



Код

Private Declare Function NetUserAdd Lib "Netapi32.dll" ( _
    <MarshalAs(UnmanagedType.LPWStr)> ByVal servername As String, _
    ByVal level As Integer, _
    ByRef buf As USER_INFO_1, _
    ByRef param_error As Integer) As Integer


Обрати внимание на тип предпоследнего параметра в шарпе и васике. Просто надо воспользоваться классом Marshal для получения указателя, что-то типа
Код

            USER_INFO_1 user = new USER_INFO_1();
            user.sUsername = name.Trim();
            user.sPassword = password;
            user.uiPriv = 1;
            user.sScript_Path = "";
            user.sHome_Dir = "";
            user.sComment = "Autogenerated user account";
            IntPtr userPtr =  Marshal.AllocHGlobal(Marshal.SizeOf(user));
            Marshal.StructureToPtr(user, userPtr, true); 

//....................................................


            int result = NetUserAdd("", 1, userPtr, out outVal);


 ну и декларацию переписать как надо ессно.

Это сообщение отредактировал(а) diadiavova - 18.7.2009, 12:48


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nerezus
Дата 18.7.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Теперь стала ошибка "неверный дескриптор"
Посмотрел - вроде все как в бейсике, странно.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
diadiavova
Дата 18.7.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Само определение метода надо переписать под шарп. В бейсике некоторые операции выполняет компилятор, а в шарпе надо всё явно делать
Приаттачиваю проект. Выдаёт саксес, ну а с остальным сам разберёшься, там и от оси завсит и от прав доступа и всё такое.

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  UserAdd.rar 60,39 Kb


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nerezus
Дата 18.7.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Тааак, твоя версия тоже ругается о неверном дескрипторе. Куда смотреть?

Сейчас в виртуалку win2008 ставлю, в ней буду пробовать.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
diadiavova
Дата 18.7.2009, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



У меня не ругается, правда и новый акк не появляется smile

Добавлено через 59 секунд
А у тебя какая ось? Если виста, то запускать надо с правами админа.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nerezus
Дата 18.7.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



XP, пользователь с правами админа.

Цитата

правда и новый акк не появляется
 А должен (

Проверил на вин2008, сначала сказало, что пароль мелкий, а потом когда ввел нормальный, то просто упало.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
diadiavova
Дата 18.7.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(nerezus @  18.7.2009,  19:07 Найти цитируемый пост)
А должен (

Вообще-то там хрень какая-то. Когда я пытаюсь создать запись с именем, с которым уже создавал, то пишет, что такая запись уже существует. Я наверно не правильно понял, что создаёт эта функция и где искать записи. Судя по всему у меня всё пашет. Но вот где те аки, которые я создал? smile


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nerezus
Дата 18.7.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



панель управление -> администрирование -> управление компьютером -> локальные пользователи -> пользователи

Добавлено через 7 минут и 51 секунду
Код

C:\!Docs\!!projects\NetUserAdd\Release>NetUserAdd.exe bebe bebe
A system error has occurred: 53
 WTF?
Это код со странички MSDN: http://msdn.microsoft.com/en-us/library/aa370649(VS.85).aspx


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
diadiavova
Дата 18.7.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Да, вот они все, голупчеги smile . Ща удалять буду.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
diadiavova
Дата 18.7.2009, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(nerezus @  18.7.2009,  19:45 Найти цитируемый пост)
A system error has occurred: 53

Ошибка 53 говорит: "Не найден сетевой путь"
Цитата(nerezus @  18.7.2009,  19:07 Найти цитируемый пост)
XP, пользователь с правами админа.

Проморгал. Нужен не пользователь с правами админа, а запустить от имени админа, но хр возможно такого и нет(не помню уже smile ). В висте это делается путём запуска проги через контекстное меню, там есть такой путь. Если надо из студии так запустить(в дебаггере), то от имени админа надо запускать саму студию.

Добавлено через 42 секунды
А если из командной строки, то строку, а если bat/cmd файл - то его.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nerezus
Дата 18.7.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



У меня сам пользователь с правами админа.
И он умеет создавать пользователей)

В win2008 запускал от админа - то же самое. Мистика (


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
diadiavova
Дата 18.7.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(nerezus @  18.7.2009,  20:40 Найти цитируемый пост)
У меня сам пользователь с правами админа.
И он умеет создавать пользователей)

Ну в хр это вроде так и есть. В висте - по другому. Там мало, чтобы пользователь имел права, надо ещё и запустить прогу с правами.


Возможно у тебя какие-то компоненты винды не установлены? Там iis или ещё чо? Я не в курсе, что для этого надо, но такое может быть.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nerezus
Дата 26.7.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Код


[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    internal struct USER_INFO_1 {
        [MarshalAs(UnmanagedType.LPWStr)]
        public string sUsername;
        [MarshalAs(UnmanagedType.LPWStr)]
        public string sPassword;
        public uint uiPasswordAge;
        public uint uiPriv;
        [MarshalAs(UnmanagedType.LPWStr)]
        public string sHome_Dir;
        [MarshalAs(UnmanagedType.LPWStr)]
        public string sComment;
        public uint uiFlags;
        [MarshalAs(UnmanagedType.LPWStr)]
        public string sScript_Path;
    }



[DllImport("netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern int NetUserAdd(
             [MarshalAs(UnmanagedType.LPWStr)] string servername,
             UInt32 level,
             IntPtr userInfo,
             out UInt32 parm_err);

        public static string UserAdd(string name, string password) {
            USER_INFO_1 user = new USER_INFO_1();
            user.sUsername = name.Trim();
            user.sPassword = password;
            user.uiPriv = 1;
            user.sScript_Path = "";
            user.sHome_Dir = "";
            user.sComment = "Autogenerated user account";
            IntPtr userPtr = Marshal.AllocHGlobal(Marshal.SizeOf(user));
            Marshal.StructureToPtr(user, userPtr, true);
            uint outVal = 0;
            int result = NetUserAdd("\\\\.", 1, userPtr, out outVal);
            if (result != 0) {
                return new System.ComponentModel.Win32Exception(result).Message;
            } else {
                return "Success";
            }
        }





MessageBox.Show(UserAdd("bebe", "bebe"));


Почему же не работает, а вот пример из MSDN работает
Код

C:\!Docs\!!projects\NetUserAdd\Release>NetUserAdd.exe \\. ttt
User ttt has been successfully added on \\.


P.S. Заработало после прописывания домена(\\.)

Это сообщение отредактировал(а) nerezus - 26.7.2009, 17:49


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1227 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.