World: r3wp
[Core] Discuss core issues
older newer | first last |
BrianH 18-Jul-2006 [5074] | There are 4 environments on Windows (aside from the per-process ones), the system, user, default user and volatile environments. The setenv.exe I found can set any of these 4, the setx.exe in the Resource Kit can set the system and user environments. |
Graham 18-Jul-2006 [5075] | I'm only looking at present to set the current user environment |
BrianH 18-Jul-2006 [5076x2] | Do you mean the current user's initial environment, or something less lasting? |
Or do you mean the REBOL process' environment that is inherited by the subprocesses started by CALL (assuming that CALL internally passes along the current environment to its subprocesses)? Or do you mean the environment of the parent process? Every started process is passed an environment, usually a copy of the parent environment (sometimes with some modifications). On Windows (NT kernel, not 9x), the initial environment is a combination of variables associated with the system (or machine), the user and volatile values, in that order. The initial values of these variables are constructed from data in the registry. Once these variables are constructed and compiled into an environment, this environment is passed to a process. Changes to the environment of that process (with getenv and setenv) don't affect the environment of the parent processes, and certainly don't affect the global values. To change the initial environment variables, you need to change them in their original registry entries. You can either do that directly or through using external applications. Keep in mind that changes to these initial values won't affect your current environment, or those of any running processes, as those environments are already set and can only be changed internally. | |
Graham 18-Jul-2006 [5078x2] | I want to change the user environment strings that othewise I have to do in the control panel -> system -> advanced |
so that they remain changed when I next login | |
BrianH 18-Jul-2006 [5080] | Do you need to support Win9x, or just WinNT derivatives like 2000, XP and 2003? |
Graham 18-Jul-2006 [5081x2] | Just Win32 |
and Win64 | |
BrianH 18-Jul-2006 [5083] | Windows 95 is Win32 as well, but its environment handling is completely different. My question still stands :) |
Graham 18-Jul-2006 [5084] | Ok, 2000, XP, 2003 |
BrianH 18-Jul-2006 [5085x4] | Then it's registry values you need to change. Give me a moment and I'll figure out which ones. |
Environment variables are based on values of the following registry keys, for each type: - Local machine: HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment - Current user: \Environment - Default user: HKEY_USERS\.DEFAULT\Environment - Volatile (probably should be treated as readonly): HKCU\Volatile Environment | |
Sorry, mistype... - Current user: HKCU\Environment | |
You can check in regedit for your current values. Remember to use REG_EXPAND_SZ values if you want references to other environment variables to be expanded, but keep in mind that these are evaluated in one pass for each category, and that local machine is evaluated before current user. A value can't make references to other variables in its own category, just references to values in other categories that are evaluated earlier. | |
Graham 18-Jul-2006 [5089x3] | found them! |
My Computer\HKEY_CURRENT\Environment | |
and else where :( | |
BrianH 18-Jul-2006 [5092] | The environments you are likely interested in are in the locations I specified. If you want to make changes to all users' local environments, look at the other keys under HKEY_USERS. The .DEFAULT key is what gets copied to a new user's local registry when that user is created. |
Graham 18-Jul-2006 [5093] | Ok. |
BrianH 18-Jul-2006 [5094x2] | Obviously you will need admin priviledges for any keys not under HKCU. |
HKEY_CLASSES_ROOT is one of those fake, mirror keys. | |
Sunanda 18-Jul-2006 [5096] | . (apologies for the dot, but the web shows this group has failed to sync on my machine) |
Louis 26-Jul-2006 [5097x2] | Hi everyone, I am presently in Indonesia. I can send email to myself, but when I try to send email to other I get the following error message: ** User Error: Server error: tcp 550-(LATURK-WS-2) [61.94.196.24] is currently not permitted to relay through Is this a problem I can correct in the script? If yes, how? |
I am able to email using Eudora just fine. | |
Graham 26-Jul-2006 [5099x5] | nothing to do with your script |
hmm. | |
maybe you need to authenticate first before sending mail. | |
So, use rebol to read your mail first and then try sending. | |
since you're not getting a smtp authentication error. | |
Louis 26-Jul-2006 [5104x2] | Ok, I'll try that and get back with the results. |
That fixed it. Thank you so much, Graham! | |
Henrik 26-Jul-2006 [5106x2] | how does one avoid that variables listed in a block in an object become global in this instance: >> unset [a b c] >> y: make object! [a: [b c d] set a [1 2 3]] >> a ** Script Error: a has no value ** Near: a >> b == 1 >> c == 2 >> d == 3 These give the same result: >> y: make object! [a: [b c d] set bind a self [1 2 3]] >> y: make object! [a: [b c d] set bind/copy a self [1 2 3]] >> y: make object! [a: copy [b c d] set a [1 2 3]] >> y: make object! [a: bind [b c d] self set a [1 2 3]] |
hm... seem to be the old "how to add new variables to an existing object" problem. looks like I'll have to find a different approach... | |
Ladislav 27-Jul-2006 [5108] | do you know this one? d: [a b c] d: use d reduce [d] set d [1 2 3] |
Henrik 27-Jul-2006 [5109] | I guess I do now :-) |
Ladislav 27-Jul-2006 [5110] | suggested reading : http://www.fm.tul.cz/~ladislav/rebol/contexts.html ;-) |
Graham 29-Jul-2006 [5111] | Anyone have some information on writing to usb ports ? |
Louis 29-Jul-2006 [5112x2] | ;To make the following work with a USB printer, do the following: ; 1. share the printer, noting the name given to the shared printer. ; 2. from the command line type: net use lpt1 \\laturk-ws-2\EPSONSty /persistent:yes ; 3. put said command line in autoexec.nt so you don't have to type it each time. printer: func [ "Sends text to printer on //prn." [catch] Text [string!] "The text to be printed." /Page "Append Carriage Return (CR) and Page Feed." ][ throw-on-error [ secure [ %//prn [allow write] ] write %//prn Text if Page [write/binary %//prn "^(0D)^(page)"] Text ] ] |
Graham, I don't know if that is what you had in mind or not. I think I got the printer function from Andrew Martin. | |
Graham 29-Jul-2006 [5114x2] | and the instructions above it are from me :) |
I was hoping that a direct way of writing to specified usb port migh now be avable. | |
Louis 30-Jul-2006 [5116x3] | :>) |
You have taught me most of what I know. | |
If you would have taught me a direct way of writing to a USB port, then I would have been able to help you. LOL. | |
Graham 30-Jul-2006 [5119] | Ok, next time I have to try harder. |
eFishAnt 5-Aug-2006 [5120x2] | Louis, that is a cool example |
...or should I say Graham. | |
Graham 8-Aug-2006 [5122] | If I have a table of say 4 x 3 and another table of say 3 x 10 .. is there a way to merge them so I end up with a table of 7 x 10 where the missing cells are either empty or none? |
Anton 10-Aug-2006 [5123] | By table, do you mean a block of blocks (a 2-dimensional array) ? Given table-A: [[1 2 3 4][5 6 7 8]] table-B: [[a b c][d e f][g h i]] then MERGE-TABLES table-A table-B == [ [1 2 3 4 a b c] [5 6 7 8 d e f] [none none none none g h i] ] Is that the desired output ? |
older newer | first last |