Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Запуск программы без прав админа из программы с правами админа

Всем доброго времени суток...
Проблема:
Есть главная программа запущенная с правами админа
и если из нее запустить скайп то он запустится с теми же правами
из за чего не работает drag&drop + если на файле ПКМ>Отправить>Skype то запустится новый экземпляр с ошибкой входа в акк

Может я плохо искал ,но - не нашел...
Задача:
как сделать обычный запуск без наследия прав?при этом не водить логин\пароль (как при Verb="runasuser")

уже все перепробовал
Ответ:
Сообщение от nfs911
а что если сделать так:
Месье знает толк в извращениях
Шутки шутками, а в принципе это сработает.
Вопрос: Запуск процесса с правами пользователя (запускающая программа работает с правами администратора)

Здравствуйте. Требуется выполнить действие, описанное в заголовке.
Читал тему , решил воспользоваться описанным там методом, но ф-ция CreateProcessAsUser не запускает процесс(возвращается значение false).
Вот код(написан на Qt):
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool MainWindow::NewProcUser(char *cmdline)
{
    HANDLE hProc, hToken;
    wchar_t exp[] = L"explorer.exe";
    DWORD pid = GetPIDbyProcessName(exp);
    qDebug() << QString::number(pid);
    hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
    if(!OpenProcessToken(hProc, TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_ASSIGN_PRIMARY, &hToken))
    qDebug() << "fail OpenProcessToken " + GetLastError();
    STARTUPINFOA si = {NULL};
    si.cb = sizeof(STARTUPINFO);
    PROCESS_INFORMATION pi = {NULL};
    if (!CreateProcessAsUserA(hToken, NULL, cmdline, NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
        qDebug()<< "fail CreateProcessAsUserA " << GetLastError();
    return true; // на время
}
Подскажите, что не так.
Вывод:
"2552"
fail CreateProcessAsUserA 0
Заранее спасибо.
Ответ:
Сообщение от Убежденный
открой Process Explorer, в свойствах процесса зайди на вкладку 'security' и
проверь, что для группы "Администраторы" стоит 'Deny'.
Так оно и оказалось, но почему тогда cmd думает, что запущен с правами администратора?
Вопрос: Запуск процесса с правами Администратора

Здравствуйте, есть программа которая запускается,не имея прав администратора(обязательно), она должна вызвать другой процесс, который требует права администратора, подскажите пожалуйста, как сделать это?
Ответ: да, запустить
Вопрос: Права админа

Здравствуйте, подскажите, можно ли снять права админа, если приложение запустили с этим правом? Если можно то намекните как.
Ответ:
Сообщение от Nanotentacle
чего нужен такой функционал у программы?
сомневаюсь, что он у своей программы хочет "снять" эти права (это даже звучит бредово).
очередной кульцхакер
Вопрос: Как сделать права: Админ, Гость и т.д?

Помогите сделать права Админ. Гость и т.д.
Например ставишь галочку CheckBox1 Меню и Гость не может открыть форму Меню и т.д.
Ответ: Qwetyui, Но мне это очень надо
Я создал но мне надо установить права

Добавлено через 13 минут
Qwetyui, Можете помощь сделать?

Добавлено через 21 час 28 минут
Помогите сделать права доступа к формам
Вопрос: Запуск процесса что лучше? что быстрее? что надежнее? Winexec CreateProcess ShellExecute

Здравствуйте , какую функцию лучше использовать для программного запуска процесса winexec CreateProcess ShellExecute ?
В чем существенная разница? Какая из них быстрее работает? Да я знаю, что winexec и ShellExecute устарели, но все же.
И есть ли еще какие-нибудь средства для запуска процессов, а то получается, что остается только одна CreateProcess.
Ответ: WinExec устарела и поддерживается только для сохранения совместимости со старыми
приложениями, ее лучше не использовать.

ShellExecute или ShellExecuteEx следует использовать тогда, когда, например,
нужно открыть документ или браузер в программе по умолчанию.

CreateProcess и его вариации следует использовать, когда требуется просто
запустить дочерний процесс и иметь возможность задавать определенные
параметры запуска (например, базовый приоритет, наследование дескрипторов,
переменные окружения и т.п.).
Вопрос: Запуск приложения с правами администратора

Суть проблемы такова берём visual studia 2013 открываем новый версия Net Framework 3.5 проект подключаем файл манифеста с параметром запуска под админом. Компилим и запускаем на машине под управлением windows 7 профессиональная sp1 x86. У пользователя права минимальные он состоит в группе пользователь (не путать с опытным пользователем) UAC на машине отрубаю в ноль пробывал с включенным приложение спрашивает при запуске пароль админа.
Вопрос как решить данную проблему.
Собственно код самого проекта ниже
manifest
XML
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- Параметры манифеста UAC
          При необходимости изменить уровень управления учетными записями Windows замените 
          узел requestedExecutionLevel одним из следующих значений.
 
        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
 
            Задание узла requestedExecutionLevel отключит виртуализацию файла и реестра.
            Если виртуализацию файла и реестра нужно использовать для обратной 
            совместимости, удалите узел requestedExecutionLevel.
        -->
        <requestedExecutionLevel  level="[B]requireAdministrator[/B]" uiAccess="[B]false[/B]" />
      </requestedPrivileges>
    </security>
  </trustInfo>
 
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- Список версий Windows, для работы с которыми предназначено данное приложение. 
      Windows автоматически выберет наиболее совместимую среду.-->
 
      <!-- Если приложение предназначено для работы с Windows Vista, снимите комментарий со следующего узла supportedOS-->
      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
 
      <!-- Если приложение предназначено для работы с Windows 7, раскомментируйте следующий узел supportedOS-->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
 
      <!-- Если приложение предназначено для работы с Windows 8, снимите комментарий со следующего узла supportedOS-->
      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->
 
      <!-- Если приложение предназначено для работы с Windows 8.1, раскомментируйте следующий узел supportedOS-->
      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>-->
 
    </application>
  </compatibility>
 
  <!-- Включите темы для общих элементов управления и диалоговых окон Windows (Windows XP и более поздние версии) -->
  <!-- <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>-->
 
</asmv1:assembly>
код пустой формочки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}
код запуска программы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Вот что выдаёт клиенту при запуске

а это уак


Погуглить гуглил и на майкрософте и на гугле толку 0 даже создовал код запуска приложения в процессе с админскими правами всёравно это сообщение. Может кто подскажет что то толковое. Приложение не вирус и должно производить загрузку каждый раз у пользователя на машине без подтверждения.
Ответ:
Сообщение от Ritm
Может кто подскажет что то толковое.
Поставь себя на место Windows. Кто-то запускает приложение из-под пользователя,
учетка которого не входит в группу "Администраторы". При этом у приложения в
манифесте прописано требовать при запуске права админа. Предположим, админов в
системе несколько (как правило, их два - встроенный админ и учетка, созданная при
установке Windows). Ну и что при этом должна делать система? Она ведь "не знает",
от имени какого администратора запускать приложение, поэтому и спрашивает.

Один из вариантов решения - сделать задание планировщика и настроить его на
запуск с повышенными правами от имени определенной учетки.
Вопрос: Запуск с правами админа и без

Я смог сделать так, чтобы прога запускалась от админа (отредактировал манифест приложения). Но если при запросе прав админа я жмакаю "нет", то прога вылетает с ошибкой. Как сделать, чтобы прога запускалась в любом случае?

Добавлено через 3 минуты
а теперь вообще не запускается
Ответ: Дебаггер в руки))
Вопрос: Первый запуск приложения с правами админа, а из авторана без

Нужно это как-то реализовать, делать установщик не предлагать.
Ответ:
Сообщение от ponchic
Можно пример, не очень понял
Приложение запускается, определяет (через командную строку, например),
что ему нужны права администратора. После этого оно перезапускает само
себя через ShellExecute с командой "runas".

Сообщение от ponchic
А разве нельзя тупо открыть ехе файл как обычны тхт файл, replace("requireAdministrator", "asInvoker") ?
Можно. Но ведь не факт, что файл будет лежать в таком месте, куда
есть права на запись.
Вопрос: Запустить приложение без прав администратора, а копию с правами админа закрыть

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.btn1Click(Sender: TObject);
begin
  ZeroMemory(@SEI, SizeOf(SEI));
  SEI.cbSize := SizeOf(TShellExecuteInfo);
  SEI.Wnd := Form1.Handle;
  SEI.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
  SEI.lpVerb := PChar('runas');
  SEI.lpFile := PChar(Application.ExeName);
  SEI.nShow := SW_SHOWNORMAL;
  ShellExecuteEx(@SEI);
  Halt;
end;
Работает все отлично, запускает приложение с правами администратора, выключая копию без прав администратора.
Вопрос в следующем, как сделать, что бы запускала приложение без прав администратора, а копию с правами админа закрывала. Подскажите пожалуйста знающие люди.
Ответ: "похожие темы" внизу ничем не помогают?