Что нового

Смена пользователя в FirefoxPortable нужен совет специалиста

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Сначала по порядку чего нужно добиться и почему. Затем что я сделал.
Вопрос можно ли упростить эту процедуру с точки зрения профессионала.
1 Использую FirefoxPortable потому что необходимо обрабатывать страницу с помощью мозрепа и т.д. порт версия хранит папку юзер профиля в своем каталоге туда же ложит кукисы. Из за кукисов это все и городится, необходимо сохранять кукисы полученные для различных пользователей. И чтоб страница узнавала только необходимого пользователя.
2 В FirefoxPortable за выбор папки профиля отвечают 2 ini файла , можно скопировав и переименовав папки, а также
изменяя содержание этих iniков добиться запуска FirefoxPortable с нужным профилем. Я это в силу своей не опытности реализовал так...
Код:
Global $pathMarker = ("путь_к_файлу\1.*") ; Фаил маркер
Global $pathMarker1 = ("путь_к_файлу\2.*") ; Фаил маркер
Global $pathMarker2 = ("путь_к_файлу\3.*") ; Фаил маркер
...
Global $pathINIroot = ("путь_к_файлу\1.ini") ; первый ини фаил
Global $pathDATAini = ("путь_к_файлу\2.ini") ; второй ини фаил
Global $rootIniLine1 = ("[FirefoxPortable]") ;содержание ини файла 1
Global $rootIniLine2 = ("User=Profile")	;< здесь надо изменить на User=Profile1
Global $rootIniLine3 = ("CheckRegWrite=true") 
Global $rootIniLine4 = ("AllowMultipleInstances=false")
Global $rootIniLine5 = ("ThunderbirdAssociate=true") 
Global $rootIniLine6 = ("DisableSplashScreen=false") 
Global $rootIniLine7 = ("SplashScreenName=") ;содержание ини файла 1
Global $DataIniLine1 = ("[FirefoxPortable]") ;содержание ини файла 2
Global $DataIniLine2 = ("LastDirectory=D:\WorkPleac\FirefoxPortable1") 
Global $DataIniLine3 = ("GoodExit=true") 
Global $DataIniLine4 = ("[Profile0]")
Global $DataIniLine5 = ("IsRelative=1") 
Global $DataIniLine6 = ("Name=default")	
Global $DataIniLine7 = ("Path=Profile.default")	;<здесь надо изменить на Path=Profile.default
If FileFindFirstFile ($pathMarker) = 1 Then  ; ищем маркер находим и перезаписываем ini фаил 1
	FileOpen ($pathINIroot,2)				; открываем
	FileWrite($pathINIroot, $rootIniLine1)	;пишим
	FileWrite($pathINIroot, @CRLF)
	FileWrite($pathINIroot, $rootIniLine2 )
	FileWrite($pathINIroot, @CRLF)
	FileWrite($pathINIroot, $rootIniLine3 )
	FileWrite($pathINIroot, @CRLF)
	FileWrite($pathINIroot, $rootIniLine4 )
	FileWrite($pathINIroot, @CRLF)
	FileWrite($pathINIroot, $rootIniLine5 )
	FileWrite($pathINIroot, @CRLF)
	FileWrite($pathINIroot, $rootIniLine6 )
	FileWrite($pathINIroot, @CRLF)
	FileWrite($pathINIroot, $rootIniLine7 )
	FileClose($pathINIroot) 				; закрывам фаил
	FileOpen ($pathDATAini,2)				; открываем
	FileWrite($pathDATAini, $DataIniLine1)	;пишим
	FileWrite($pathDATAini, @CRLF)
	FileWrite($pathDATAini, $DataIniLine2 )
	FileWrite($pathDATAini, @CRLF)
	FileWrite($pathDATAini, $DataIniLine3 )
	FileWrite($pathDATAini, @CRLF)
	FileWrite($pathDATAini, $DataIniLine4 )
	FileWrite($pathDATAini, @CRLF)
	FileWrite($pathDATAini, $DataIniLine5 )
	FileWrite($pathDATAini, @CRLF)
	FileWrite($pathDATAini, $DataIniLine6 )
	FileWrite($pathDATAini, @CRLF)
	FileWrite($pathDATAini, $DataIniLine7 )
	FileClose($pathDATAini) ; закрывам фаил
		
... 
ElseIf FileFindFirstFile ($pathMarker1) = 1 Then  ; ищем маркер находим и перезаписываем ini фаил 1и2
... 
ElseIf FileFindFirstFile ($pathMarker2) = 1 Then  ; ищем маркер находим и перезаписываем ini фаил 1и2
... 
ElseIf FileFindFirstFile ($pathMarker3) = 1 Then  ; ищем маркер находим и перезаписываем ini фаил 1и2
...
ElseIf FileFindFirstFile ($pathMarker4) = 1 Then  ; ищем маркер находим и перезаписываем ini фаил 1и2
	
EndIf
... ; дальше скрипт
... ; окончание скрипта
If FileFindFirstFile ($pathMarker) = 1 Then ; ищем маркер находим удоляем и создаем новый
	FileOpen ($pathMarker1,2)
	FileClose($pathMarker1)
	FileDelete($pathMarker)
ElseIf FileFindFirstFile ($pathMarker1) = 1 Then ; ищем маркер находим удоляем и создаем новый
	FileOpen ($pathMarker2,2)
	FileClose($pathMarker2)
	FileDelete($pathMarker1)
ElseIf FileFindFirstFile ($pathMarker2) = 1 Then  ; ищем маркер находим удоляем и создаем новый
... 
ElseIf FileFindFirstFile ($pathMarker3) = 1 Then  ; ищем маркер находим удоляем и создаем новый
...
ElseIf FileFindFirstFile ($pathMarker4) = 1 Then  ; ищем маркер находим удоляем и создаем новый

EndIf	
... ; дальше скрипт

Вопрос возможно ли как то оптимизировать этот процесс(скрипт ) чтоб он не был километровым, скажем еслb пользователей будет 100. Может существуют способы изменения файлов не такие громоздкие менять то надо всего по одной строчке в файле.
Изменения в ini файлы вносятся по наличию маркерного файла в папке, найдя файл 1 загружается первый профиль, после отработки скрипта маркер удаляется и создается новый маркер 2, найдя его загружается другой профиль, в виду того что пользователи заходят в определенной последовательности то и каждый раз старый маркер удаляется а новый создается.

И еще ВОпросик в конце код, на создание и удаление файла почему то не отрабатывается, если создать скрипт только поиск и удаление и создание тогда работает , а вот в сам скрипт когда этот же кусок без изменений добавляешь, то не происходит ничего и ошибку не выдает, такое чувство что скрипт выходит раньше не подскажите почему. Все что идет после этих строчек
Код:
FileWrite($pathDATAini, $DataIniLine7 )
	FileClose($pathDATAini) ; закрывам фаил

Вообще не исполняется как так??? так на всякий случай скрипт у меня без этих маментов
Код:
... 
ElseIf FileFindFirstFile ($pathMarker1) = 1 Then 
... 
ElseIf FileFindFirstFile ($pathMarker2) = 1 Then 
...

все вроде как надо.
Выявилось еще одно недоразумение команда FileOpen($pathDATAini,2) открывающая второй иник должна очистить и патом вписать то что надо, а она дописывает только в конец файла, итог начинает глюкчить в Ффокс хотя первый иник стирает и заново записывает. Почему так не пойму :'(
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
{MultplQuestionWarn.SModer}
Поэтому, прошу, разделите вопросы между разными темами.

По поводу профилей для разных пользователей и самого скрипта - да, оптимизировать можно, причем много.

Хотя, для начала, думаю, стоит конкретнее уточнить задачу. Т.к., например я, не совсем понял «картину происходящего». Как понимаю, вопрос о локальных пользователях, так? В этом случае можно сделать следующий вариант:
1. Выяснить имя пользователя.
2. Изменить в INI-файле адрес папки профиля на вид:
Код:
..\папка_filrefox\имя_пользователя\
Скрипт запускать через автозагрузку для всех пользователей при входе в систему.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
`p r o x y
Поэтому, прошу, разделите вопросы между разными темами.
Согласен с предупреждением извиняюсь тему можно удалить.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Удалять не стоит. В этой теме можно продолжить поиск решения по изменению адреса профиля для разных пользователей. А вот уже в других темах – другие вопросы.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Решение найдено.
 
Верх