Форум: "Прочее";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
ВнизРазрешить доступ к удаленному компу из под пользователя SYSTEM Найти похожие ветки
← →
DelphiN! © (2007-07-11 12:38) [0]Удалено модератором
Примечание: СПАМ
← →
Something (2007-07-11 12:40) [1]Если удаленный комп XP то в локальной политике безопасности для "запретить доступ к компьютеру по сети" убрать гостя.
← →
DelphiN! © (2007-07-11 12:41) [2]Удаленный комп Windows 2003
← →
umbra © (2007-07-11 12:44) [3]
> ожно ли вообще открыть доступ к удаленному компьютеру для
> пользователя SYSTEM
а надо ли? если подсунут эксплойт какой-нибудь, то Ваша система будет беззащитна.
← →
Something (2007-07-11 12:48) [4]По идее в 2003 политики по умолчанию пускают гостя, но вообще [1] правда,
не стоит так делать. Лучше на IIS настроить виртуальную папку на то что нужно качать.
← →
DelphiN! © (2007-07-11 12:53) [5]
> Something (11.07.07 12:40) [1]
> Если удаленный комп XP то в локальной политике безопасности
> для "запретить доступ к компьютеру по сети" убрать гостя.
>
Нету там гостя ... Все приложения запущеные под любыми пользователями отличными от SYSTEM доступ к компьютеру имеют. А вот SYSTEM - не имеет
> umbra © (11.07.07 12:44) [3]
>
>
Решение временное, пока не реализован собственные механизм передачи файлов ... Пока необходимо сделать так, хотябы для того чтобы программа смогла обновиться автоматически на многочисленных клиентах ...
← →
Gydvin © (2007-07-11 13:16) [6]Решал подобную проблему, для нод32 стандарт+утилита создания зеркала обновления. Вот, как эта связка работала. Нод обновлялся из сети, затем запускал утилиту для создания из его баз зеркало обновлений для других клиентов. А остальные уже обновлялись от меня. Все бы нечего, но так как Нод работает из под system, то и утилиту он запускал под system. А последняя из-за этого не могла получить доступ на сетевые ресурс, куда нуно сохранять зеркало. Решил таким образом. Создал небольшой екзешник, который при запуске, создает в папке с нодом файлик и прекращает работу. Прицепил его к ноду вместо утилиты. Создал еще один екзешник, который запускается вместе с виндой, соответственно он запускается от имени пользователя, который мониторит папку с нодом на наличие этого файла, скажем пару раз в минуту. При обнаружении убивает его и запускает уже утилиту. Соответственно костыли там всякие, от одновременного доступа к файлу. Надеюсь поможет.
← →
DelphiN! © (2007-07-11 13:22) [7]Ну а разрешить доступ SYSTEM-у значит никак?
← →
Gydvin © (2007-07-11 13:38) [8]Не заморачивался, да и нужно ли [3]
← →
DelphiN! © (2007-07-11 13:48) [9]
> Gydvin © (11.07.07 13:38) [8]
Писал же в [5] что клиентов очень много и чтобы они обновились автоматически нужен доступ к какой-либо шаре из под SYSTEM-а, а иначе ручками придется ... :( Вот я и хочу доступ для SYSTEM-а, открыть, обновить клиенты и закрыть его раз и навсегда, т.к в новой версии клиента уже есть собственная передача фалов без помощи каких либо расшаренных ресурсов ...
← →
DiamondShark © (2007-07-11 16:00) [10]
> нужен доступ к какой-либо шаре из под SYSTEM
Прям-таки обязательно из-под SYSTEM?
Разреши доступ какому-нибудь юзеру, потом в потоке, который качает, имперсонируйся этим юзером (LogonUser + ImpersonateLoggedOnUser).
← →
vpbar © (2007-07-11 17:16) [11]действительно, зачем именно SYSTEM.
Вон у меня nncron сам SYSTEM а ходит на шары через LogonUser и нормально
← →
Рамиль © (2007-07-11 17:58) [12]SYSTEM = Computer
т. е. выставте разрешение компьютеру (сработает если в домене, в одноранговой не задумывался)
← →
DelphiN! © (2007-07-11 18:34) [13]Решил сделать так :
P1 - программа работающая под SYSTEM-ом
P2 - программа которая выполняет работу с шарами
P1 запускает P2 с правами другого пользователя(Администратора) через функцию CreateProcessWithLogonW. P2 производит работу с шарами так как запущен с правами обычной учетной записи Администратора.
Однако при попытке P1 запустить P2 под учетной записью администратора выходит ошибка "Отказано в доступе".
Неужели программа работающая под SYSTEM-ом не может запускать программы под другими учетными записями?
Пытаюсь запустить так :
...
MyCreateProcess("\\192.168.1.99\share\test.exe","","Admin","AdminPass");
...
function MyCreateProcess(Path,WorkingDir,User,Pass: String): Boolean;
var
sa: STARTUPINFO;
pi: PROCESS_INFORMATION;
WLogin,WPass,WPath,WFolder: PWideChar;
Folder: String;
lz: Cardinal;
err: array[0..512] of Char;
begin
if User = "" then
begin
FillChar(sa, SizeOf(sa), 0);
sa.cb := SizeOf(sa);
Result := CreateProcess(nil,PChar(Path),nil,nil,False,0,nil,nil,sa,pi);
end
else
begin
ZeroMemory(@Sa,Sizeof(sa));
sa.cb := SizeOf(tstartupinfo);
sa.dwFlags := STARTF_USESHOWWINDOW;
sa.wShowWindow := SW_SHOWDEFAULT;
sa.lpReserved := nil;
sa.lpDesktop := nil;
sa.lpTitle := nil;
{New(WLogin); StringToWideChar(WinAccountLogin,WLogin,Length(WinAccountLogin)+1);
New(WPass); StringToWideChar(WinAccountPass,WPass,Length(WinAccountPass)+1);
New(WPath); StringToWideChar(Path,WPath,Length(Path)+1);
Folder := MyExtractFilePath(Path); New(WFolder); StringToWideChar(Folder,WFolder,Length(Folder)+1); }
GetMem(WLogin, Length(User) * SizeOf(WLogin) + 1);
StringToWideChar(User, WLogin, Length(User) * SizeOf(WLogin) + 1);
GetMem(WPass, Length(Pass) * SizeOf(WPass) + 1);
StringToWideChar(Pass, WPass, Length(Pass) * SizeOf(WPass) + 1);
GetMem(WPath, Length(Path) * SizeOf(WPath) + 1);
StringToWideChar(Path, WPath, Length(Path) * SizeOf(WPath) + 1);
Folder := ExtractFilePath(Path);
GetMem(WFolder, Length(Folder) * SizeOf(WFolder) + 1);
StringToWideChar(Folder, WFolder, Length(Folder) * SizeOf(WFolder) + 1);
CreateProcessWithLogonW(WLogin, nil, WPass, 0,
nil, WPath,0, nil, nil, sa, pi);
lz := GetLastError;
if lz <> 0 then
begin
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, lz, 0, @err, 512, nil);
MessageBox(0,PChar(String(err)),"",0);
end;
Dispose(WLogin);
Dispose(WPass);
Dispose(WPath);
Dispose(WFolder);
end;
end;
← →
DelphiN! © (2007-07-11 18:36) [14]Вернее :
MyCreateProcess("C:\test.exe","","Admin","AdminPass");
← →
DelphiN! © (2007-07-11 18:37) [15]Если пытаюсь запустить процесс таким же образом не из под учетной записью SYSTEM-a, все работает на ура
← →
DiamondShark © (2007-07-11 18:42) [16]
> CreateProcessWithLogonW(WLogin, nil, WPass, 0,
> nil, WPath,0, nil, nil, sa, pi);
lpDomain
[in] Pointer to a null-terminated string that specifies the name of the domain or server whose account database contains the lpUsername account. If this parameter is NULL, the user name must be specified in UPN format.
← →
DelphiN! © (2007-07-12 09:46) [17]
> DiamondShark © (11.07.07 18:42) [16]
>
>
UPN формат это ведь username@domain а домена у меня нет.
Да и работает ведь все, не из под пользователя SYSTEM ...
← →
DelphiN! © (2007-07-12 10:51) [18]Перепробовал все варианты, все время - Отказано в доступе. Может быть на пользователя SYSTEM системой наложено какое либо ограничение, которое не дает приложению работающему под пользователем SYSTEM запустить что либо под другим пользователем
← →
DelphiN! © (2007-07-12 12:07) [19]Выяснил, возможно где-то в системе стоит запрет на запуск приложений из под другого пользователя для SYSTEM, так как если запустить стандартный RunAs под пользователем SYSTEM и попытаться с помощью него запустить программу под другой учетной записью выходит все та же ошибка "Отказано в доступе"
Где этот запрет снимается я не нашел :((
Или может всетаки есть какие-то способы решения этой проблемы для моей программы, не меняя настройки системы?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.045 c