Программа запускается только от имени другого пользователя

Исходя из этого вопроса об открытии проводника файлов от имени другого пользователя, я попытался перейти к C:Windows , Shift+ правый клик explorer.exe и нажав «Запуск от имени другого пользователя». Когда я ввожу данные для входа в систему пользователя, я получаю 2 последовательных сообщения об ошибках, оба из которых говорят

Windows не может получить доступ к указанному устройству, пути или файлу. У вас могут не быть соответствующих разрешений для доступа к элементу

Если я попытаюсь ввести данные для входа в учетную запись, которая в данный момент вошла в систему, это сработает, а другая — нет. Это касается обеих учетных записей (администраторов) на моем ПК.

редактировать

Там было некоторое замешательство в комментариях. Я пытаюсь следовать принятому ответу в вопросе, связанном выше, и это не работает. Некоторые люди говорят, что это невозможно сделать, поэтому странно, что есть принятый ответ с 3 ответами

binaryfunt 22 сен ’16 в 10:58 2016-09-22 10:58
2016-09-22 10:58

3 ответа

Согласно этому сообщению в блоге TechNet, файлexplorer.exe выглядит однопоточным и не позволяет нескольким потокам работать под разными учетными записями пользователей:

Как запустить программу от имени другого пользователя в Windows 11 и Windows 10

Проводник Windows не предназначен для работы в нескольких контекстах безопасности в одном сеансе рабочего стола, Windows не может просто вызвать запрос UAC и затем запустить экземпляр Explorer с повышенными правами

Наиболее полезная альтернатива использованию explorer.exe, как также описано в этой статье, — это загрузить explorer++ и запустить его от имени пользователя, для которого вы хотите просматривать файлы. Вы можете подключиться к UNC-путям так же легко в explorer++, как и в explorer, так что это кажется достаточной альтернативой. Это также самый простой подход, который мне встречался, который не требует повышенных разрешений (например, тех, которые необходимы для вмешательства в реестр или установки дополнительного программного обеспечения).

Читайте также:
Как обновить программу java

John Eisbrener 01 авг ’17 в 16:21 2017-08-01 16:21
2017-08-01 16:21

Из того, что вы можете прочитать в других вопросах ( 1, 2) по этой теме, обычно это в лучшем случае хакерство и, конечно, не поддерживаемый сценарий. Более того, второй вопрос содержит больше информации, и если вы перейдете по нескольким ссылкам, вы окажетесь здесь: И так это Vista.

Если вы проверите эту статью, вы прочитаете следующее:

На Vista, однако, есть больше изменений. Ни Internet Explorer, ни Windows Explorer не хотят использовать несколько учетных записей на одном рабочем столе. Если вы попытаетесь запустить IE под учетной записью, отличной от учетной записи на рабочем столе, на экране появится сообщение об ошибке: «Команда RUNAS не поддерживается».

Насколько я понимаю, основная причина заключается в том, что в защищенном режиме Internet Explorer, который работает на низком уровне целостности, IE также запускает процесс посредника Medium IL (ieuser.exe), который запускается как пользователь рабочего стола и который управляет выбранными операциями Medium IL для процесса Low IL. Включение нескольких идентификаторов в эту смесь привело бы к значительной сложности, которую лучше избегать. Если вы попытаетесь запустить Windows Explorer от имени другого пользователя, вы ничего не увидите — новый процесс запускается, но завершается без отображения окна.

.

Игры и программы запускаются только от имени администратора

Исследователь немного хитрее. Непосредственное применение «Запуск от имени администратора» не сделает этого, но запуск его из командной оболочки с повышенными правами часто будет. Я считаю, что командная строка, такая как «explorer /e,c:», будет работать, в то время как просто запуск «explorer» может не сработать. Но, как и прежде: если он работает вообще, это непреднамеренный побочный эффект текущей реализации, и он может быть изменен в любое время.

Разумно ожидать, что они будут вести себя так же, как в Windows Vista, Windows 7, Windows 8 и теперь (вероятно) Windows 10.

Читайте также:
Как разрешить программе доступ в интернет

Так что, похоже, вам придется либо взломать, рассмотреть обходной путь, либо переоценить свою проблему, которая приводит к необходимости запускать проводник как другой пользователь.

В качестве обходного пути вы можете использовать другой файловый менеджер, например Total Commander, cmd он работает с другими учетными данными, диалоговым окном открытия файла какого-либо другого программного обеспечения, которое вы запустили от имени другого пользователя, или с помощью «быстрого переключения» Windows, чтобы просто временно переключиться на другого пользователя.

Вы на самом деле не предоставили никакой информации, почему вы пытаетесь это сделать, поэтому я понятия не имею, как может выглядеть другой подход и что касается взлома. в приведенных выше вопросах их несколько. Я думаю, почему тот, кого вы связали в своем первоначальном вопросе, был замаскирован как решенный, так это то, что этот человек провел дополнительные исследования и, возможно, наткнулся на эти хаки.

Источник: usersuper.ru

Программа запускается только от имени другого пользователя

А если логин и пароль не известны, но нужно под Win7 запустить с правами админа (что бы всплыло окно запроса UAC), то как это сделать?
Манифест не катит — запрос UAC будет при каждом запуске программы, а нужно только при выполнении определенных действий: нужно что-то в реестр записать или папку программ или службу запустить — запустил себя с админскими правами, сказал что делать, сделал с правами админа, закрыл привилегированную копию, продолжил работу.

Типа такого UAC (в зависимости от настроек безопасности):
или

Так эта проблема решилась, после MSDN — Redesign for UAC Compatibility (UAC) была написана функция:

Теперь стоит вопрос: как скрыть сообщение выдаваемое службой при её установке или удалении (т.е. при запуске её exe-шника с ключом /install или /uninstall соответственно) ?

Нашел — нужно ещё ключик добавить: /SILENT

Последний раз редактировалось KiL0z; 12.05.2011 в 15:13 . Причина: решение проблемы

Источник: www.programmersforum.ru

Программа запускается только от имени другого пользователя

Также существует функция CreateProcessWithLogonW, которая передает параметры создания процесса службе Runas. Если вышеуказ. служба остановлена, функция вернет ошибку.
Эту функцию и использует программа (не служба) Runas из поста [1]

Читайте также:
Какая программа восстанавливает удаленные видео с телефона Андроид

← →
Karbazol ( 2004-10-13 10:34 ) [5]

LogonUser + ImpersonateLoggedOnUser + CreateProcess + RevertToSelf

Ой ли? так прям и сказано?

Выдержка из описания функции LogonUser (секция Renark):

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TfMain = class(TForm)
Button: TButton;
procedure ButtonClick(Sender: TObject);
end;

var
fMain: TfMain;

procedure TfMain.ButtonClick(Sender: TObject);
begin
MyCreateProcess();
end;

function CreateProcessWithLogonW (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;

const
LOGON_WITH_PROFILE = $00000001;
LOGON_NETCREDENTIALS_ONLY = $00000002;
LOGON_ZERO_PASSWORD_BUFFER = $80000000;

< ADVAPI32.DLL functions >
type
TCreateProcessWithLogonW =
function (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;

const
DllName = «advapi32.dll»;

var
DllHandle : THandle;
_CreateProcessWithLogonW : TCreateProcessWithLogonW;

function NotImplementedBool : Boolean;
begin
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
Result := false;
end;

function CreateProcessWithLogonW (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;
begin
if InitLib and Assigned(_CreateProcessWithLogonW) then
Result := _CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword,
dwLogonFlags, lpApplicationName, lpCommandLine, dwCreationFlags,
lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInfo)
else
Result := NotImplementedBool;
end;

initialization
finalization
if DllHandle <> 0 then
FreeLibrary(DllHandle);
end.

← →
Karbazol ( 2004-10-13 10:54 ) [10]

Упс. Действительно, для W2K эта привилегия нужна, но она есть не только у SYSTEM, но и у администраторов.
Так что, если ось — ХР или если текущий пользователь — админ, или процесс запущен как сервис, под учетной записью Local System, то все сработает.

Источник: delphimaster.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru