Форум: "Потрепаться";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизЗапуск от имени Найти похожие ветки
← →
syte_ser78 © (2005-08-02 12:19) [0]Мое приложение не хочет запускаться на компьютере пользователей без прав администратора. (Работа с Автокадом через OLE). Постоянно его запускать самому или говорить каждому пароль не хочу.
Вопрос. Как настроить чтобы приложение (и Автокад) постоянно запускались с моими правами?
← →
evvcom © (2005-08-02 12:43) [1]Лучше исправить свое приложение. Что же оно такое делает, что не запускается без прав админа?
← →
syte_ser78 © (2005-08-02 12:52) [2]Ошибка гласит - невозможно создать OLE сервер (чето типа того).
При запуске автокада с правами админа под профилем пользователя этой ошибки нет
← →
3DxFantastika © (2005-08-02 12:57) [3]syte_ser78 © (02.08.05 12:19)
> Как настроить чтобы приложение (и Автокад) постоянно
> запускались с моими правами?
сделать его сервисом и появляться только на горячие клавиши например
← →
Lamer@fools.ua © (2005-08-02 13:03) [4]>При запуске автокада с правами админа под профилем пользователя
Это как?
← →
syte_ser78 © (2005-08-02 14:19) [5]Lamer@fools.ua © (02.08.05 13:03) [4]
Вхожу под именем простого пользователя. Запускаю Автокад от своего (администратора) имени. Вот так.
Вобщем вот что я заметил. Отлаживаю код на своей машине. Зашол под своим именем (администратор), автокад гружу от имени не админитратора смотрю на код
try
... acd := GetActiveOleObject( "AutoCad.Application");
except
acd := CreateOLEObject( "AutoCad.Application");
end;
При запуске акада от имени админа выпоняется трай условие (отмечено точками)
При запуске акада от имени неадмина выполняется эсепт что приводит к ошибке автокада. Выскакивает окно с предложением отправить отчет об ошибке.
-
← →
Lamer@fools.ua © (2005-08-02 14:26) [6]>>syte_ser78 © (02.08.05 14:19) [5]
>Вхожу под именем простого пользователя. Запускаю Автокад от своего (администратора) имени. Вот так.
И при чём здесь профиль пользователя тогда? Работает профиль "своего (администратора) имени". В том числе и настройки реестра.
← →
syte_ser78 © (2005-08-02 14:26) [7]Можно ли выполнить запуск программы от определенного имени через командную строку? Если можно, то как?
← →
syte_ser78 © (2005-08-02 14:28) [8]Lamer@fools.ua © (02.08.05 14:26) [6]
а чтонибуть по делу? Как либо исправить код, либо запустить автокад от своего имени под чужим профилем?
← →
3DxFantastika © (2005-08-02 14:49) [9]syte_ser78 © (02.08.05 14:26) [7]
E:\>runas
Использование команды RUNAS:
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user:<имя пользователя> <программа>
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:<имя пользователя>] <программа>
/noprofile Не загружать профиль пользователя. Это приводит к более
быстрой загрузке приложения, но может стать причиной
неправильной работы некоторых приложений.
/profile Загружать профиль пользователя.
Этот параметр установлен по умолчанию.
/env Использовать текущие параметры среды.
/netonly Учетные данные предназначены только для удаленного
доступа.
/savecred Использовать учетные данные, сохраненные пользователем.
Этот параметр не доступен в Windows XP Home Edition
и будет проигнорирован.
/smartcard Для указания учетных данных используется
смарт-карта.
/user <имя пользователя> должно быть в виде USER@DOMAIN или DOMAIN\USER
<программа> Командная строка для EXE. См. примеры ниже.
Примеры:
> runas /profile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"Мой файл.txt\""
Примечание: вводите пароль пользователя только тогда, когда он запрашивается.
Примечание: формат записи USER@DOMAIN несовместим с параметром /netonly.
Примечание: параметр /profile несовместим с параметром /netonly.
Примечание: параметр /savecred несовместим с параметром /smartcard.
← →
syte_ser78 © (2005-08-02 15:00) [10]3DxFantastika © (02.08.05 14:49) [9]
в runas невозможно в командной строке указать пароль. Вот в чем грабли то
← →
3DxFantastika © (2005-08-02 15:45) [11]
unit ProcessWithLogon;
interface
uses Windows, SysUtils;
const
LOGON_WITH_PROFILE = $1;
LOGON_NETCREDENTIALS_ONLY = $2;
function CreateProcessWithLogonW(
UserName,
Domain,
Password: PWideChar;
dwLogonFlags: DWORD;
lpApplicationName,
lpCommandLine: PWideChar;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
lpCurrentDirectory: PWideChar;
const lpStartupInfo: TStartupInfo;
var lpProcessInformation: TProcessInformation): BOOL; stdcall;
function StartProcessWithLogon(
const strUsername, // Логин
strDomain, // Домен
strPassword, // Пароль
strCommandLine: WideString // запускаемая программа с путем к ней
): Boolean;
implementation
function CreateProcessWithLogonW; external advapi32 name "CreateProcessWithLogonW";
function StartProcessWithLogon(
const strUsername, // Логин
strDomain, // Домен
strPassword, // Пароль
strCommandLine: WideString // запускаемая программа с путем к ней
): Boolean;
var
pi: TProcessInformation;
si:TStartupInfo;
bResult: boolean;
St: string;
begin
Result := False;
ZeroMemory(@si,sizeof(TSTARTUPINFO));
si.cb:= sizeof(TSTARTUPINFO);
si.lpDesktop:=nil;
bResult := CreateProcessWithLogonW(
PWideChar(strUsername),
PWideChar(strDomain),
PWideChar(strPassword),
LOGON_WITH_PROFILE,
PWideChar(strCommandLine),
nil,
0,
nil,
nil,
si,
pi
);
if not bResult then
begin
St := SysErrorMessage(Windows.GetLastError);
MessageBox(0, PAnsiChar(St), "Ошибка!", MB_OK or MB_ICONERROR)
end
else
begin
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
end;
Result:=bResult;
end;
end.
Uses ProcessWithLogon;
procedure TForm1.Button2Click(Sender: TObject);
begin
StartProcessWithLogon(Edit1.Text,Edit4.Text,Edit2.Text,Edit3.Text);
end;
← →
syte_ser78 © (2005-08-02 16:08) [12]ВАУ Огромный сенькс!!!
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.035 c