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

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

22.10.2014, 17:51. Показов 4014. Ответов 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
33371 / 21497 / 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
33371 / 21497 / 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru