1

Тема: JavaScript:путь_к_рабочему_столу

Добрый день, Господа!

Не нашел встроенных конструкций для выявления полного пути к рабочему столу пользователя ПК, но есть с помощью WScript..
Это такой пробел в браузерных скриптах..?
А как сохранить по разрешению пользователя на рабочий стол заведомо подготовленный файл (не зная заранее пути)?
Если сохранять на диск в любую папку - нет проблемм, а вот с систмеными папками есть трудности, плюс разные ОСи у пользователей бывают, х32/64...

Находил сообщения, что можно найти полный путь через реестр Виндовс... а если это МАК или Лунукс-подобная система, то еще больше проблемм..

Кто-нибудь занимался этим вопросом, есть ли информация, где рыть? Поиск ничего конкретного и толкового мне не дает пока что..

Любители построили Ковчег, а профессионалы - Титаник.

2

Re: JavaScript:путь_к_рабочему_столу

stir пишет:

Это такой пробел в браузерных скриптах..?
А как сохранить по разрешению пользователя на рабочий стол заведомо подготовленный файл (не зная заранее пути)?
Если сохранять на диск в любую папку - нет проблемм

Никакого пробела в БРАУЗЕРНЫХ скриптах нет! С их помощью нельзя на компьютер пользователя сохранить кроме куков почти ничего (загрузить файл в кэш браузера, UserData в IE...) хоть по разрешению пользователя, хоть без оного. Ну допустим, вы узнаете путь, и как вы собираетесь сохранять туда файл?

Забыл пароль и потерял e-mail.

3 (изменено: stir, 2012-05-12 11:36:23)

Re: JavaScript:путь_к_рабочему_столу

У меня есть сервак в локальной сети, есть прога на скрипте, с помощью оной и расшаренного ресурса хотел скопировать и/или создать необходимые ей файлы, которые после окончания работы удаляются за ненадобностью. Кол-во юзеров ограничено. Сохранение файлов происходит стандарным способом в js. Самое главное - файл отчета ошибок в ходе работы проги или пользователя хотелось бы помещать на рабочий стол юзера!

Пример. Корявый, но все же - Вы зашли на сайт, запустили на нем прогу расчета пути из точки а в точку б, ждете.. и баЦ! Error! либо вообще окно браузера исчезло в никуда. Кто виноват и что делать?? Никаких отчетов юзер не видит либо системные не должен видеть и разбираться.. для этого есть специалисты в этой области. И было бы хорошо (!) иметь на рабочем столе какую-нибудь запись в тхт файлике о произошедшем случае.
В противном случае никто не сможет толком понять и самое главное быстро - что произошло и как это исправить.

Вы не считаете это полезным - создание лога на столе юзера?

Знаете как прописать путь??

Любители построили Ковчег, а профессионалы - Титаник.

4

Re: JavaScript:путь_к_рабочему_столу

stir пишет:

И было бы хорошо (!) иметь на рабочем столе какую-нибудь запись в тхт файлике о произошедшем случае.

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

( 2 * b ) || ! ( 2 * b )

5

Re: JavaScript:путь_к_рабочему_столу

Rumata, нет как и все остальные. 

Однако все-равно находят дырки в оси и .. воруют!

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

Любители построили Ковчег, а профессионалы - Титаник.

6 (изменено: shiz, 2012-05-14 18:33:44)

Re: JavaScript:путь_к_рабочему_столу

stir пишет:

делаем и сохраняем на диск с помощью скрипта лог-файл

Можно в этом месте подробнее, как вы собрались это делать с помощью браузерного скрипта? Аесли можете это сделать, то и рабочий стол найти должно быть раз плюнуть.

Забыл пароль и потерял e-mail.

7

Re: JavaScript:путь_к_рабочему_столу

И что вы к рабочему столу прицепились? У пользователя может быть элементарно отключен показ значков на рабочем столе - когда он увидит что на нём появилось? Или наоборот - рабочий стол замусорен так, что что-то новое трудно заметить. А может, он вообще Проводником не пользуется.

Забыл пароль и потерял e-mail.

8 (изменено: stir, 2012-05-15 10:44:21)

Re: JavaScript:путь_к_рабочему_столу

shiz. Код привожу из рабочего примера с максимальным сжатием лишнего, но этого достаточно для общего понимания.

function pr1() {
var nameserver="\\\\server";
var namefolder1= nameserver + "\\arhiv\\scan\\";
auditfolder(namefolder1);
if (f1==1) {
//здесь тело проги
}
else 
{
var err='****';
createfiles('C:\\03-911.txt');
writefiles('C:\\03-911.txt', err);
alert("Ошибка такая-то, отчет сохранен там то');
}

после этого можно запустить bat-ник и переместить на рабочий стол уже известный файл - C:\\log\\03-911.txt
можно и перед выводом сообщения это сделать, но так проще- отработал первый модуль, запустился второй..

Более воды лить необязательно, понятно, что внутренними средствами js не узнать путь к рабочему столу.

Любители построили Ковчег, а профессионалы - Титаник.

9

Re: JavaScript:путь_к_рабочему_столу

Для понимания это ничего не прибавляет. Если "внутренними средствами js не узнать путь к рабочему столу", то как внутренними средствами JS сделать:

createfiles('C:\\03-911.txt');
writefiles('C:\\03-911.txt', err);

В каких браузерах это будет работать?

Забыл пароль и потерял e-mail.

10 (изменено: BatLife, 2012-05-16 01:02:37)

Re: JavaScript:путь_к_рабочему_столу

shiz пишет:

Если "внутренними средствами js не узнать путь к рабочему столу", то как внутренними средствами JS сделать

Вполне возможно, что подразумеваемые функции createfiles и writefiles заимствованы из какого-то готового решения для локальной интрасети, и используют ActiveX-элемент типа Scripting.FileSystemObject для манипуляции с файлом, что прекрасно работает на Internet explorer 5.5+

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

Самый простой вариант, если использовать только ActiveX-элемент типа Scripting.FileSystemObject, будет вызов FSO.GetSpecialFolder(2), которая получить каталог TEMP текущего пользователя; возврат на два уровня выше даст корневой каталог пользователя, где будет доступна папка Рабочий стол

P.S. Если включать в рассмотрение "дырявый" браузер firefox, то в нем можно сделать сохранение файла в любой путь, доступный текущему системному пользователю, за счет одной из многочисленных уязвимостей, описанных здесь http://www.exploit-db.com/search/?actio … ilter_cve=

11 (изменено: stir, 2012-05-16 07:29:03)

Re: JavaScript:путь_к_рабочему_столу

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

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

createfiles('C:\\03-911.txt');// создает пустой тхт файл
writefiles('C:\\03-911.txt', err);// заполняет созданный файл ранее данными построчно


ПС: Все скрипты я использую с оговоркой работоспособности в ИЕ8.. о чем сообщаю пользователям либо при входе и начале работы, либо в спецразделе (аналогия с "О программе" или "Карта сайта").

Любители построили Ковчег, а профессионалы - Титаник.

12 (изменено: shiz, 2012-05-16 09:33:41)

Re: JavaScript:путь_к_рабочему_столу

stir пишет:

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

В них упирается ответ на вопрос, как вы технически собираетесь сохранять с помощью внутренних средств JS на компьютер пользователя, по-моему я ясно выразил, что именно меня интересует в вашем скрипте.
С самого начала следовало не ходить вокруг да около и рассуждать "если это МАК или Лунукс-подобная система", а конкретно сказать, что вам требуется работоспособность в IE с низкими настройками безопасности, позволяющими запуск небезопасных элементов ActiveX (а это не совсем "внутренние средства JS") - от этого зависело быстрое получение конструктивного ответа. Собственно говоря, я его вам уже дал (как говорится, "Sapienti sat"):

...А если можете это сделать, то и рабочий стол найти должно быть раз плюнуть.

Если быть точнее, то ответ такой: в таком случае рабочий стол находится точно так же, как и в WSH (и эта тема, на мой взгляд, изначально неправильно размещена в разделе "JavaScript (браузерный)"):

var WshShell = new ActiveXObject("WScript.Shell");
var UserDesktopPath = WshShell.SpecialFolders("Desktop");

другой вариант (который, по-моему, может сработать при более высоких настройках безопасности):

var Shell = new ActiveXObject("Shell.Application");
var UserDesktopPath = Shell.NameSpace("shell:Desktop").Self.Path;
BatLife пишет:

Самый простой вариант, если использовать только ActiveX-элемент типа Scripting.FileSystemObject, будет вызов FSO.GetSpecialFolder(2), которая получить каталог TEMP текущего пользователя; возврат на два уровня выше даст корневой каталог пользователя, где будет доступна папка Рабочий стол

На это не стоит полагаться, мой рабочий стол вы так уж точно не найдёте.

Забыл пароль и потерял e-mail.

13

Re: JavaScript:путь_к_рабочему_столу

shiz пишет:

На это не стоит полагаться, мой рабочий стол вы так уж точно не найдёте.

Подобное решение было предложено исключительно из соображения, заключающегося в использовании только ActiveX-элемента Scripting.FileSystemObject
Предложенные вами варианты,конечно же, являются более правильными и полными