Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
null1
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 13
1

CreateProcessWithLogonW в Unicode & multi-byte

03.09.2013, 09:47. Просмотров 357. Ответов 2
Метки нет (Все метки)

Хочу воспользоваться функцией CreateProcessWithLogonW в Unicode:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int _tmain(int argc, _TCHAR* argv[])
{
 
if(argc==1)
 {
        PROCESS_INFORMATION pi = {0};
        STARTUPINFO         si = {0};
        si.cb = sizeof(STARTUPINFO);
 
        CreateProcessWithLogonW((L"user"),((L"local")),(L"passw"),LOGON_WITH_PROFILE,NULL,(L"ex.exe 111"),NULL,NULL,lpszW,&si,&pi);
        WaitForSingleObject(
        prinfo.hProcess,
        INFINITE
        );
        return 1;
 }
 else
 {
        cout<<adm<<"\n";
        system("pause");
}
 
    return 0;
}
Всё работает. Но я хочу чтобы эта функция у меня работала и в multi-byte. Преписал её вот так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int _tmain(int argc, _TCHAR* argv[])
{
 
if(argc==1)
 {
        PROCESS_INFORMATION *pi;
        STARTUPINFOW *si;
        si = new STARTUPINFOW;
        si->cb=sizeof(STARTUPINFOW);
        pi = new PROCESS_INFORMATION;
 
        CreateProcessWithLogonW((L"user"),((L"local")),(L"passw"),LOGON_WITH_PROFILE,NULL,(L"ex.exe 111"),NULL,NULL,lpszW,si,pi);
        WaitForSingleObject(
        prinfo->hProcess,
        INFINITE
        );
        return 1;
 }
 else
 {
        cout<<adm<<"\n";
        system("pause");
}
 
    return 0;
}
На XP-всё работает, а на WIN7 нет.
Подскажите как это исправить или где я ошибаюсь...и почему так происходит?=(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2013, 09:47
Ответы с готовыми решениями:

MFC CEdit & unicode
имеем диалоговое юникодовое MFC приложение. в диалоге имеем CEdit m_Edit; ...

VS 2010 Express Edition && (MFC && ATL(WTL)) ???
Здравствуйте Смогу ли я воспользоваться Легально MFC и ATL(WTL) библиатеками...

Вывод типа, универсальные ссылки, cannot bind lvalue to && и другие
Доброго дня, товарищи. Вот код: Вот отчет компиля: Объясните мне,...

Microsoft Visual Studio 2010 && OpenGL
Сделал все по инструкции...

Форматированный вывод: разница между Unicode и Multi-Byte
Доброго времени суток, форумчане! Вопрос по поводу формата консольного вывода....

2
Убежденный
Ушел с форума
Эксперт С++
15997 / 7268 / 1179
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
03.09.2013, 11:00 2
Цитата Сообщение от null1 Посмотреть сообщение
si = new STARTUPINFOW;
si->cb=sizeof(STARTUPINFOW);
1) Где инициализация остальных полей структуры ? Например, dwFlags ?

2) По поводу параметра lpCommandLine функции CreateProcessWithLogonW сказано:

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
lpCommandLine [in, out, optional]

The function can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.
Так что передавать туда строковой литерал нельзя (т.к. он read-only).

3) Так и не увидел, где здесь multi-byte.
1
null1
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 13
03.09.2013, 11:18  [ТС] 3
я все понял.
Цитата Сообщение от Убежденный Посмотреть сообщение
1) Где инициализация остальных полей структуры ? Например, dwFlags ?
обнулил всю структуру и все заработало

2) По поводу параметра lpCommandLine функции CreateProcessWithLogonW сказано:

Так что передавать туда строковой литерал нельзя (т.к. он read-only).

с этиим как ни странно проблем нет.
3) Так и не увидел, где здесь multi-byte.
под multy-byte написана другая программа, в которую я хотел вставить эту функцию.чтоб она там заработала переделал инициализацию на STARTUPINFOW *si; и видимо забыл обнулить её...сейчас всё работает.
А почему и до этого на XP работало а на WIN7 нет?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 11:18

No mapping for the Unicode character exists in the target multi-byte code page
Сам код отсюда IDE CBuilder XE8 Компиляция без ошибок.А по нажатию на...

Idhttp и No mapping for the Unicode character exists in the target multi-byte code page
Здравствуйте! Подскажите, пожалуйста как избавиться от этой ошибки: No mapping...

Use Multi-Byte Character Set , Use Unicode Character Set
TCHAR*buf = new TCHAR; GetWindowText(hwnd__etit_box, buf,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru