Jump to content

64 bit registry question


GEOSoft
 Share

Recommended Posts

Martin's code returned "False" here.

Thanks Jon

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

I''m glad you like that function GEOSoft, but when I said "something like this" that was my way of saying I haven't tried it. Do you know if it returns true on a 64 bit OS?

Looks like it didn't work Martin. See Jons reply above.

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Looks like it didn't work Martin. See Jons reply above.

Yes, it's no. :D

I'm interested to know why it doesn't work, obviously there is something another thing I don't understand.

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

Since Jon already cleared up/confused the @ProcessorArch issue, I'll just mention one thing. Calling LoadLibrary and GetProcessAddress is about the silliest thing I've ever seen done with DllCall(). Why? Because DllCall() is little more (Jon will disagree) than a thin wrapper around that very same sequence of function calls. And to top it off, didn't even call FreeLibrary().

Edit: Thinking more on it, you may have re-implemented @ProcessorArch. As Jon mentioned, despite it's misleading name, it really just tells you if the OS is 64-bit or not.

Edited by Valik
Link to comment
Share on other sites

Since Jon already cleared up/confused the @ProcessorArch issue, I'll just mention one thing. Calling LoadLibrary and GetProcessAddress is about the silliest thing I've ever seen done with DllCall(). Why? Because DllCall() is little more (Jon will disagree) than a thin wrapper around that very same sequence of function calls. And to top it off, didn't even call FreeLibrary().

Edit: Thinking more on it, you may have re-implemented @ProcessorArch. As Jon mentioned, despite it's misleading name, it really just tells you if the OS is 64-bit or not.

I did re-implement @ProcessorArch. Although I too believe it is poorly named. Renaming it would likely break quite a bit of code but at this point a simple StringReplace() run against the scripts would fix it quickly. It's not like it's going to be called many times in a script. I would suspect that it has even been used in a few cases wher the user thought they were actually getting the processor architecture and had they known otherwise it would not have been used. This might be a good time to make the name change and then add the real ProcessorArch at a later date. That would give people a chance to get the name change out of the way and determine if they even needed it before another macro is added.

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

:D

Somehow I just knew that was going to come up. It's minor breakage, I agree. However my thinking is that the pain could be somewhat lessened by making the rename now and adding the new macro later.

Func FixMyDamnMacro($File)
   $oFile = FileRead($File)
   $oFile = StringReplace($oFile, "@ProcessorArch", "@OSArch")
   $nFile = FileOpen($File,2)
   FileWrite($nFile,$oFile)
   FileClose($nFile)
EndFunc

Would make it pretty simple right now.

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Just about the initial question, you don't have to convert it to write to 64-bit registry values. Windows handles the "wrong" regwrites and regreads from 32 bit programs automatically.

Thanks for the info @Manadar. Like I said, I don't have a 64 bit Windows install to play with and I wanted to make sure it had the proper key before I ran RegEnumVal(). The current solution is working so I'll keep it in as a "Fail Safe".

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

  • Administrators

Just about the initial question, you don't have to convert it to write to 64-bit registry values. Windows handles the "wrong" regwrites and regreads from 32 bit programs automatically.

That's only true for the 32bit version of AutoIt running on x64. If you run the native x64 version you are on your own :D
Link to comment
Share on other sites

Since Jon already cleared up/confused the @ProcessorArch issue, I'll just mention one thing. Calling LoadLibrary and GetProcessAddress is about the silliest thing I've ever seen done with DllCall(). Why? Because DllCall() is little more (Jon will disagree) than a thin wrapper around that very same sequence of function calls. And to top it off, didn't even call FreeLibrary().

Ah, thanks for the note about FreeLibrary Valik, I'll try to remember that next time.

But if what I did is silly then how should I find out if the function IsWow64Process exists in Kernel32.dll? Should I just call it and see if it fails or not?

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

Yes. Just check @error after DllCall().

Thanks.
Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...