Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

Запуск от имени   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.061 c
4-1121086642
NeoMaster
2005-07-11 16:57
2005.08.28
Параматры Service Application


3-1121438865
_Anton
2005-07-15 18:47
2005.08.28
ODBC и BLOB


4-1120639293
Demidoff
2005-07-06 12:41
2005.08.28
Как работает ShellChangeNotifier.


14-1123249871
Jeer
2005-08-05 17:51
2005.08.28
Ни кто из нас так ни где хорошо не работал как в своем резюме


4-1121014897
pirate
2005-07-10 21:01
2005.08.28
Как считать значение ячейки памяти?