С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3

CreateProcessWithLogonW - Отказано в доступе

22.10.2014, 17:51. Показов 4007. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!!! Ребята, помогите, разобраться. Хочу запустить программу под Опытным пользователем с правами Администратора для этого использую функцию CreateProcessWithLogonW запускаю эту функцию из консольного окна

Вот код

C++
1
2
3
4
5
6
7
8
9
10
UnicodeString rtyu = "C:\\Update for Advanced User v1.2.exe";
 
        PROCESS_INFORMATION pi = {0};
        STARTUPINFOW si = {0};
        si.cb = sizeof(STARTUPINFO);
        
         if (CreateProcessWithLogonW(L"1", NULL, L"qerty", 0,rtyu.w_str(),NULL, 0, NULL, NULL, &si, &pi)==false)
        {
           ShowMessage(SysErrorMessage(GetLastError()));
                      }
Такой код работает отлично. Программа запускается с правами Администратора под опытным пользователем, но если я делаю такой код

C++
1
2
3
4
5
6
7
8
9
10
UnicodeString rtyu = "C:\\Documents and Settings\\Sasha\\Рабочий стол\\Update for Advanced User v1.2\\Win32\\Release\\Update for Advanced User v1.2.exe";
 
        PROCESS_INFORMATION pi = {0};
        STARTUPINFOW si = {0};
        si.cb = sizeof(STARTUPINFO);
        
         if (CreateProcessWithLogonW(L"1", NULL, L"qerty", 0,rtyu.w_str(),NULL, 0, NULL, NULL, &si, &pi)==false)
        {
           ShowMessage(SysErrorMessage(GetLastError()));
        }
То Выводит сообщение:Отказано в доступе. Я думаю что это связано с тем, программе не нравится путь к файлу который надо запустить. Скорее всего он слишком длинный или что-то ещё не так... Вопрос: Почему при коротком пути к файлу - файл запускается, а при том когда этот екзешник вложеный в другие каталоги программа пишет: Отказано в доступе.

Заранее благодарен за ответ
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.10.2014, 17:51
Ответы с готовыми решениями:

Отказано в доступе
Написала программу!Связанную с потоком.Но при запуске какое-то окно цпу вылазиет,пишет отказано в доступе..все виснет!Хотя до этого всё...

Unable to terminate process: Отказано в доступе
Открываю проект, жму "Run", после чего если во время работы в проекте возникает любая ошибка, когда я хочу сделать Program Reset (Ctrl+F2)...

Служба терминалов Windows Server 2008. Отказано в "Отказано в доступе" при локальном входе. Нет доступа по RDP
Здравствуйте. Помогите пожалуйста разобраться. Была установлена роль Службы терминалов, установка прошла без ошибок. После перезагрузки...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
22.10.2014, 18:06
If you are using a long file name that contains a space, use quoted strings to indicate where the file name ends and the arguments begin; otherwise, the file name is ambiguous.
, посмотри, в каком порядке система интерпретирует твое имя файла...

C++
1
UnicodeString rtyu = "\"C:\\Documents and Settings\\Sasha\\Рабочий стол\\Update for Advanced User v1.2\\Win32\\Release\\Update for Advanced User v1.2.exe\"";
должно решить проблему
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.10.2014, 10:46  [ТС]
UI, не помогло решить проблему сейчас выводит такую ошибку
Миниатюры
CreateProcessWithLogonW - Отказано в доступе  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
23.10.2014, 13:56
Лучший ответ Сообщение было отмечено Sasha как решение

Решение

Не знаю, мне проверить негде, XP нет в наличии, но если получать путь к десктопу через SHGetSpecialFolderLocation + CSIDL_DESKTOP, то под Win7 нормально отрабатывает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    wchar_t path[MAX_PATH + 1] = {0};
    LPITEMIDLIST pidl;
    SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);
    SHGetPathFromIDList(pidl, path);
 
    UnicodeString rtyu = String(path) +
        L"\\Update for Advanced\\Win32\\Release\\Update for Advanced User v1.2.exe";
 
    // ...
 
    if (CreateProcessWithLogonW(L"user", NULL, L"pass", 0, rtyu.w_str(),
        NULL, 0, NULL, NULL, &si, &pi) == false)
    {
        ShowMessage(SysErrorMessage(GetLastError()));
    }
(специально назвал папку и файл как у тебя. Почти...)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.10.2014, 19:37  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
wchar_t path[MAX_PATH + 1] = {0};
* * LPITEMIDLIST pidl;
* * SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);
* * SHGetPathFromIDList(pidl, path);
UnicodeString rtyu = String(path) +
* * * * L"\\Update for Advanced\\Win32\\Release\\Update for Advanced User v1.2.exe";
// ...
if (CreateProcessWithLogonW(L"user", NULL, L"pass", 0, rtyu.w_str(),
* * * * NULL, 0, NULL, NULL, &si, &pi) == false)
* * {
* * * * ShowMessage(SysErrorMessage(GetLastError ()));
Под ХР пишет отказано в доступе

Добавлено через 13 минут
UI, самое интересное, что если даже написать вот так вот
C++
1
UnicodeString rtyu = ExtractFilePath(Application->ExeName) + L"Update for Advanced User v1.2.exe";
Так тоже пишет Отказано в Доступе

Добавлено через 4 часа 36 минут
Всё разобрался. Ошибка Отказано в Доступе вылетала потому как не следует запускать программу на рабочем столе для одного пользователя с администраторскими правами справами администратора другого пользователя иначе программа вызовет ошибку Отказано в доступе. Зашёл в систему с правами опытного пользователя программа запустилась с рабочего стола.

Добавлено через 5 минут
Странно, но факт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2014, 19:37
Помогаю со студенческими работами здесь

Отказано в доступе
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using Ionic.Zip; ...

Отказано в доступе
Перебираю папки так DirectoryInfo dirs = dinfo.GetDirectories(); if (dirs.Length > 0) { ...

Отказано в доступе!
Добрый день, народ!!! Вся надежда только на вас, я не знаю чё делать - на днях включил свой старый комп, надо было информацию из "Моих...

Отказано в доступе
Здравствуйте!!! При открытии doc - файла, пишет, что отказано в доступе В чем может быть проблема???? кто уже сталкивался с...

Отказано в доступе
c:\Qt\2010.04\qt\bin\rcc.exe -name box_resurs box_resurs.qrc -o debug\qrc_box_resurs.cpp mingw32-make: Leaving directory...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru