Page 1 of 1 1
Topic Options
#125251 - 2004-08-18 04:33 PM Checking for file and modifying
brewdude6 Offline
Hey THIS is FUN

Registered: 2000-10-21
Posts: 280
Loc: Nashville, TN
This script isn't finished by any means, but I thought I would stop and hopefully get some pointers before getting to far.

Here is the scenario: We use Hummingbird Hostex Explorer with many different versions. I need to modify the hotex.ini file on every machine that has hostex installed. I can use readkey to find out if hostex is installed, but the pointer to the userdir isn't consistent in the registry so I decided to search for the file in all known filepaths.

I'd like to check all the possible locations, add the entries to the ini file if they don't exist, continue on if they do.

I believe that I need to change the way the variables are declared...maybe only declaring them if the file is found and use the same variable name in each case statement? My concern is that there may be more than one hostex.ini file and using select case would only change the first instance it came accross?

Thank you for any suggestions.

Code:

$HX1 = 'c:\program files\exceed.95\user\hostex\hostex.ini'
$HX2 = 'c:\hostexplorer\user\hostex\hostex.ini'
$HX3 = 'c:\program files\exceed.nt\user\hostex\hostex.ini'
$HX4 = 'c:\hostex6.2\user\hostex\hostex.ini'
$HX5 = 'c:\hostexplorer\NT\user\hostex\hostex.ini'
$HX6 = 'c:\Windows\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini'
$HX7 = 'c:\Documents and Settings\All Users\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini'
$HX8 = 'c:\Windows\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini'
$HX9 = 'c:\Windows\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini'
$HX10 = '%APPDATA%\Hummingbird\Connectivity\7.10\Hostex\hostex.ini'
$HX11 = 'c:\Windows\Application Data\Hummingbird\Connectivity\8.00\hostexplorer\hostex.ini'
$HX12 = '%APPDATA%\Hummingbird\Connectivity\8.00\Hostexplorer\hostex.ini'
$HX13 = '%windir%\hostex.ini'
If InGroup("Users-Macro")
Exit
EndIf
$Hostexexist = KeyExist("HKEY_LOCAL_MACHINE\Software\Hummingbird")
If $Hostexexist
Select
Case Exist("$HX1")
WriteProfileString("$HX1","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX1","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX1","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX1","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX1","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX1","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX1","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX2")
WriteProfileString("$HX2","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX2","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX2","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX2","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX2","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX2","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX2","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX3")
WriteProfileString("$HX3","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX3","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX3","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX3","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX3","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX3","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX3","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX4")
WriteProfileString("$HX4","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX4","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX4","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX4","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX4","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX4","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX4","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX5")
WriteProfileString("$HX5","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX5","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX5","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX5","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX5","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX5","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX5","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX6")
WriteProfileString("$HX6","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX6","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX6","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX6","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX6","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX6","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX6","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX7")
WriteProfileString("$HX7","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX7","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX7","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX7","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX7","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX7","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX7","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX8")
WriteProfileString("$HX8","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX8","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX8","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX8","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX8","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX8","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX8","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX9")
WriteProfileString("$HX9","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX9","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX9","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX9","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX9","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX9","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX9","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX10")
WriteProfileString("$HX10","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX10","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX10","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX10","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX10","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX10","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX10","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX11")
WriteProfileString("$HX11","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX11","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX11","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX11","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX11","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX11","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX11","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX12")
WriteProfileString("$HX12","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX12","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX12","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX12","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX12","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX12","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX12","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case Exist("$HX13")
WriteProfileString("$HX13","Disable.Settings","Macro Edit","Off, Hide")
WriteProfileString("$HX13","Disable.Settings","Macro Run","Off, Hide")
WriteProfileString("$HX13","Disable.Settings","Macro Record","Off, Hide")
WriteProfileString("$HX13","Disable.Settings","Macro Pause","Off, Hide")
WriteProfileString("$HX13","Disable.Settings","Macro Resume","Off, Hide")
WriteProfileString("$HX13","Disable.Settings","Macro End Recoding","Off, Hide")
WriteProfileString("$HX13","Disable.Settings","Macro Cancel Recording","Off, Hide")
Case 1
? "Hostex.ini wasn't found"
EndSelect

EndIf

_________________________
I could have made a neat retort but didn't, for I was flurried and didn't think of it till I was downstairs.
-Mark Twain

Top
#125252 - 2004-08-18 04:59 PM Re: Checking for file and modifying
Richard H. Administrator Offline
Administrator
*****

Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
Ick! Surely the path to the application / config files is available in the registry? Why is it inconsistant?

As you say, you have a major problem with your script if the files are in more than one place - only one will get updated.

If you really want to persevere with the manual find,
  • Assign the paths to an array.
  • loop through the array and do the work for each file found.

Top
#125253 - 2004-08-18 05:07 PM Re: Checking for file and modifying
Richard H. Administrator Offline
Administrator
*****

Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
Something like this:
Code:
$asFilePaths='c:\program files\exceed.95\user\hostex\hostex.ini',
'c:\hostexplorer\user\hostex\hostex.ini',
'c:\program files\exceed.nt\user\hostex\hostex.ini',
'c:\hostex6.2\user\hostex\hostex.ini',
'c:\hostexplorer\NT\user\hostex\hostex.ini',
'c:\Windows\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini',
'c:\Documents and Settings\All Users\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini',
'c:\Windows\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini',
'c:\Windows\Application Data\Hummingbird\Connectivity\7.10\Hostex\hostex.ini',
'%APPDATA%\Hummingbird\Connectivity\7.10\Hostex\hostex.ini',
'c:\Windows\Application Data\Hummingbird\Connectivity\8.00\hostexplorer\hostex.ini',
'%APPDATA%\Hummingbird\Connectivity\8.00\Hostexplorer\hostex.ini',
'%windir%\hostex.ini'

If InGroup("Users-Macro") Exit 0 EndIf

If KeyExist("HKEY_LOCAL_MACHINE\Software\Hummingbird")
For Each $sPath in $asFilePaths
If Exist($sPath)
$=WriteProfileString($sPath,"Disable.Settings","Macro Edit","Off, Hide")
$=WriteProfileString($sPath,"Disable.Settings","Macro Run","Off, Hide")
$=WriteProfileString($sPath,"Disable.Settings","Macro Record","Off, Hide")
$=WriteProfileString($sPath,"Disable.Settings","Macro Pause","Off, Hide")
$=WriteProfileString($sPath,"Disable.Settings","Macro Resume","Off, Hide")
$=WriteProfileString($sPath,"Disable.Settings","Macro End Recoding","Off, Hide")
$=WriteProfileString($sPath,"Disable.Settings","Macro Cancel Recording","Off, Hide")
EndIf
Next
EndIf


Top
#125254 - 2004-08-18 06:55 PM Re: Checking for file and modifying
Les Offline
KiX Master
*****

Registered: 2001-06-11
Posts: 12734
Loc: fortfrances.on.ca
Don't put vars in quotes.
Case Exist("$HX1")
Vars in strings are evil.
_________________________
Give a man a fish and he will be back for more. Slap him with a fish and he will go away forever.

Top
#125255 - 2004-08-20 04:05 PM Re: Checking for file and modifying
brewdude6 Offline
Hey THIS is FUN

Registered: 2000-10-21
Posts: 280
Loc: Nashville, TN
Thanks for the example. The registry locations are inconsistent because of different versions of the application. Here are some examples of the different versions.

Version 8
HKLM\software\hummingbird\connectivity\8.00\defaultuser\userdir
value=[AppDataFolder]Hummingbird\Connectivity\8.00

On Winnt systems this puts the ini file in '%userprofile%\application data\hummingbird\connectivy\8.00\hostexplorer\hostex.ini'

On Win9x systems the path is '%windir%\application data\hummingbird\connectivity\8.00\hostexplorer\hostex.ini

Version 7.10
HKLM\Software\Humminigbird\Connectivity\7.10\HostExplorer\UserDir

Value='the literal path to the directory where the hostex.in file resides'\hostex.ini

Version 6.2
HKLM\Software\Humminigbird\Exceed\CurrentVersion\UserDir

Value='literal path"+\hostex\hostex.ini

Version 4.0

HKLM\Software\Hummingbird\Hostexplorer\4.0

Value=No default value

Is there a way to loop through readvalue statements and the use one group of writevalue statements to avaid being repetitive? With the value in version 8, what would be the best way to express that value giving consideration to the different versions of windows? Thanks





_________________________
I could have made a neat retort but didn't, for I was flurried and didn't think of it till I was downstairs.
-Mark Twain

Top
#125256 - 2004-08-20 05:09 PM Re: Checking for file and modifying
Richard H. Administrator Offline
Administrator
*****

Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
The example I gave will loop through all the possible paths in the list, and update every one that it finds.

Is that not sufficient to your needs?

Top
#125257 - 2004-08-20 05:23 PM Re: Checking for file and modifying
brewdude6 Offline
Hey THIS is FUN

Registered: 2000-10-21
Posts: 280
Loc: Nashville, TN
Yes, it does that very well. I'll probably leave it as-is but I believe the best way to do it is to check the registry like you originally alluded too. I was just wondering if there is a way to do it with one writevalue routine.
_________________________
I could have made a neat retort but didn't, for I was flurried and didn't think of it till I was downstairs.
-Mark Twain

Top
#125258 - 2004-08-20 05:28 PM Re: Checking for file and modifying
Richard H. Administrator Offline
Administrator
*****

Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
You can enumerate all the keys and values under HKLM\Hummingbird, and look for entries which end "\hostex.ini".

Then check that the file exists and update it.

Look in the manual for EnumKey() and EnumValue() to enumerate the registry.

Top
Page 1 of 1 1


Moderator:  Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart 
Hop to:
Shout Box

Who's Online
1 registered (Henriques) and 2516 anonymous users online.
Newest Members
fgarcia, Viginette, ManuvdWielNL, Sir_Barrington, batdk82
17889 Registered Users

Generated in 0.438 seconds in which 0.016 seconds were spent on a total of 12 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org