Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Въпрос за Променливите на средата


Препоръчан отговор


Когато си направя една променлива на средата и й задам някаква стойност къде се записва тази стойност? Значи в регистрите в environment съществува само името на променливата, но няма стойност, а реално има зададена такава и работи. Как да я видя каква е тази стойност?

Линк към този отговор
Сподели в други сайтове

Не, не, не си ме разбрал. Не в PHP, създавам променлива на средата в Windows с инсталатор за програма и искам да прочета тази стойност, да я видя каква е в даден момент! Как?

Линк към този отговор
Сподели в други сайтове
Хех, все пак за каква платформа говорим :yanim:

За променливите на средата на Windows XP. Къде се записват стойностите им? Променливата се създава чрез инсталатор, но мисля, че е общо за всички приложения. В регистрите се създава само името на променливата, а как да видя каква стойност има?


Линк към този отговор
Сподели в други сайтове

Къде я намери в регистъра :yanim:))

Иначе ако напишеш в конзолата SET и ще видиш всички променливи и стойностите им

Линк към този отговор
Сподели в други сайтове
Къде я намери в регистъра :baby:))

Иначе ако напишеш в конзолата SET и ще видиш всички променливи и стойностите им

Еее идеално, това май ще ми свърши работа. Довечера ще пробвам и ще пиша, много ти благодаря! :yanim:

Линк към този отговор
Сподели в други сайтове

Абе при мен в HKEY_CURRENT_USER\Environment се вижда и стойността

regeditxx0.jpg

Линк към този отговор
Сподели в други сайтове
Абе при мен в HKEY_CURRENT_USER\Environment се вижда и стойността

regeditxx0.jpg

Да, но когато си създам една променлива без стойност и след това прочета дадена стойност от регистрите и я запиша в тази променлива, точтно тук в регистрите си ми стои празна стойността на променливата. :yanim: А също да те питам има ли начин да се "заключи" тази променлива от промяна и само когато ми потрябва да си я отключа за промяна!

Линк към този отговор
Сподели в други сайтове

С какво искаш да я четеш и записваш - с пакетен файл (.BAT; .CMD) или някаква програма?

Трябва ли да се запазва при рестартиране на компютъра?

"Заключването" при какви условия се налага?

Трябва ли да се въвежда от потребител по време на инсталирането?

Между другото, ако в конзолата напишеш след 'SET ' началото на името на променливата, показаният списък ще е по-конкретен.

Линк към този отговор
Сподели в други сайтове
С какво искаш да я четеш и записваш - с пакетен файл (.BAT; .CMD) или някаква програма?

Трябва ли да се запазва при рестартиране на компютъра?

"Заключването" при какви условия се налага?

Трябва ли да се въвежда от потребител по време на инсталирането?

Между другото, ако в конзолата напишеш след 'SET ' началото на името на променливата, показаният списък ще е по-конкретен.

Да трябва да се запази след рестартиране. Не не се въвежда от потребителя при инсталирането. По време на инсталацията, инсталатора чете стойност на регистрите и я записва в тази променлива. Тогава тя трябва да се заключи, за да не се промени случайно от друга програма и кога се деинсталира програмата инсталатора трябва да върне стойността от тази променлива пак в регистрите. А четенето и записването на променливата може да става и с BAT файл и с програма.

angry.gif Ах как не се сетих по-рано. Аммм сега ми дойде на ум нещо ... Как мога да прочета определена стойност в регистрите и да я запиша във файл и след време да върна тази стойност в регистрите пак чрез файл, тоест чрез БАТ файл ще е най-добре?

Линк към този отговор
Сподели в други сайтове

Може би се обаждам малко късно, но писането по редбистрито и бат файловете не са добра идея. Има общодостъпен стандартен майкрософтски COM API за манипулиране на променливите на средата. Ще дам за пример един джаваскрипт :

function main() 

{

	var wshShell = new ActiveXObject("WScript.Shell");


	var envShell = wshShell.Environment("System");

//	var envShell = wshShell.Environment("User");

//	var envShell = wshShell.Environment("Process");


	var varValue = envShell("MayNewVar");


	if (varValue == "")

	{

		envShell("MayNewVar") = "SpecialValue";

	}

}


try 

{

	main();

}

catch (e) 

{

	WScript.echo(("" != e.description) ? e.description : e);

}
Този скрипт проверява дали съответната променлива е сетната и ако не е, я сетва. За да се определи скоупа на променливата се упоменава в какъв контекст се създава. За цялата ОС-ка, за един юзър или само за текущия процес (ред 5, 6 или 7 от скрипта). Този скрипт може да се запази като .js файл. и да се изпълнява с командна линия :
%SystemRoot%\system32\cscript.exe scriptname.js

Това е начин който се поддържа от всички инсталатори. Друг начин е на скрипта на съответният инсталатор да се напише подобна логика, като се ембедне COM обекта. Малко повече инфо - ето тук.

Линк към този отговор
Сподели в други сайтове
Може би се обаждам малко късно, но писането по редбистрито и бат файловете не са добра идея. Има общодостъпен стандартен майкрософтски COM API за манипулиране на променливите на средата. Ще дам за пример един джаваскрипт :

function main() 

{

	var wshShell = new ActiveXObject("WScript.Shell");


	var envShell = wshShell.Environment("System");

//	var envShell = wshShell.Environment("User");

//	var envShell = wshShell.Environment("Process");


	var varValue = envShell("MayNewVar");


	if (varValue == "")

	{

		envShell("MayNewVar") = "SpecialValue";

	}

}


try 

{

	main();

}

catch (e) 

{

	WScript.echo(("" != e.description) ? e.description : e);

}
Този скрипт проверява дали съответната променлива е сетната и ако не е, я сетва. За да се определи скоупа на променливата се упоменава в какъв контекст се създава. За цялата ОС-ка, за един юзър или само за текущия процес (ред 5, 6 или 7 от скрипта). Този скрипт може да се запази като .js файл. и да се изпълнява с командна линия :
%SystemRoot%\system32\cscript.exe scriptname.js

Това е начин който се поддържа от всички инсталатори. Друг начин е на скрипта на съответният инсталатор да се напише подобна логика, като се ембедне COM обекта. Малко повече инфо - ето тук.

Благодаря на всички, за съжаление не се получи каквото искам и да ви кажа май няма да стане така! Ще се наложи малко повече работа и писане, но ще бъде по-добре да използвам сравнения, отколкото променливи на средата. Благодаря на всички за помощта!

Линк към този отговор
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване