Программе требуется, чтобы ее запускали с сетевого пути типа \\server\share\app.exe
Политика безопасности NET по умолчанию этого не разрешает делать.
Как наиболее правильно разрешить запуск этого приложения именно с сетевого диска без копирования на компьютер пользователя?
Здравствуйте, Anton Batenev, Вы писали:
AB>Hello, All!
AB>Программе требуется, чтобы ее запускали с сетевого пути типа \\server\share\app.exe AB>Политика безопасности NET по умолчанию этого не разрешает делать. AB>Как наиболее правильно разрешить запуск этого приложения именно с сетевого диска без копирования на компьютер пользователя?
Запускаем bat-ник под админом у юзера на рабочей станции
echo Устанавливает доступ на папку с Вашей программой
echo для группы Machine в секцию All_Code (1) для сборок без strong_name
CasPol.exe -machine -addgroup 1 -url "file://network_computer/folder/folder1/*" FullTrust -name "Your programm Local network Zone Name"
pause
FullTrust — дает полные права .Net приложениям в заданной папке. Можно дать на один файл.
CasPol.exe д.б доступен либо через PATH либо лежать в папке с батником
Здравствуйте, Andrew Merkulov, Вы писали:
AB>>Программе требуется, чтобы ее запускали с сетевого пути типа \\server\share\app.exe AB>>Политика безопасности NET по умолчанию этого не разрешает делать. AB>>Как наиболее правильно разрешить запуск этого приложения именно с сетевого диска без копирования на компьютер пользователя? AM>Запускаем bat-ник под админом у юзера на рабочей станции AM>[code] AM>echo Устанавливает доступ на папку с Вашей программой AM>echo для группы Machine в секцию All_Code (1) для сборок без strong_name
А можно ли перед этим проверить — нет ли уже политики с таким именем и, например, если есть, то изменить, если нет, то создать? А то пользователи любят раз по N-цать запускать все, что ни попадя...
P.S. А то caspol.exe -help какую-то уж больно скудную и непонятную информацию выдает
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Andrew Merkulov, Вы писали:
AB>>>Программе требуется, чтобы ее запускали с сетевого пути типа \\server\share\app.exe AB>>>Политика безопасности NET по умолчанию этого не разрешает делать. AB>>>Как наиболее правильно разрешить запуск этого приложения именно с сетевого диска без копирования на компьютер пользователя? AM>>Запускаем bat-ник под админом у юзера на рабочей станции AM>>[code] AM>>echo Устанавливает доступ на папку с Вашей программой AM>>echo для группы Machine в секцию All_Code (1) для сборок без strong_name
AB>А можно ли перед этим проверить — нет ли уже политики с таким именем и, например, если есть, то изменить, если нет, то создать? А то пользователи любят раз по N-цать запускать все, что ни попадя...
AB>P.S. А то caspol.exe -help какую-то уж больно скудную и непонятную информацию выдает
Здравствуйте, Cypress, Вы писали:
AB>>P.S. А то caspol.exe -help какую-то уж больно скудную и непонятную информацию выдает C>Если мне не изменяет память, то кто то здесь вылаживал самописную утилиту для этого!
Хм... поиск не помог... не подскажете ключевые слова?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Запуск NET приложения по сетевому пути
От:
Аноним
Дата:
01.03.06 14:05
Оценка:
Здравствуйте, Anton Batenev, Вы писали:
AB>Hello, All!
AB>Программе требуется, чтобы ее запускали с сетевого пути типа \\server\share\app.exe AB>Политика безопасности NET по умолчанию этого не разрешает делать. AB>Как наиболее правильно разрешить запуск этого приложения именно с сетевого диска без копирования на компьютер пользователя?
нате:
public static void SetFullTrust(string fpath)
{
string root = Path.GetPathRoot(fpath);
if (root == null || root.Length == 0)
return;
IMembershipCondition condition = null;
condition = new UrlMembershipCondition(fpath);
PermissionSet
ps = new PermissionSet(PermissionState.Unrestricted);
PolicyStatement
pls = new PolicyStatement(ps, PolicyStatementAttribute.LevelFinal);
UnionCodeGroup
hcg = new UnionCodeGroup(condition, pls);
hcg.Name = "AUTO_" + fpath;
hcg.Description = "automatic generated code group by setfulltrust.";
PolicyLevel
pl = GetPolicyLevel("Machine");
pl.RootCodeGroup.AddChild(hcg);
SecurityManager.SavePolicy();
}
public static PolicyLevel GetPolicyLevel(string policyLevelName)
{
IEnumerator iePH = SecurityManager.PolicyHierarchy();
ArrayList al = new ArrayList();
while (iePH.MoveNext())
{
al.Add(iePH.Current);
if (((PolicyLevel)(iePH.Current)).Label.ToString() == policyLevelName)
return iePH.Current as PolicyLevel;
}
return null;
}