Jump to content
lrstndm

FileExists not working on System32

Recommended Posts

lrstndm

Hi all,

I want to check if a file exists under the System32 folder: C:\Windows\System32\inetsrv\rewrite.dll

The following code always worked for me:

$string = @SystemDir & "\inetsrv\rewrite.dll"
ConsoleWrite(FileExists($string))

But yesterday I updated my Windows 10 with the last "big" update and now my @SystemDir returns the following string:

C:\Windows\SysWOW64

And before it was:

C:\Windows\System32

So I thought I change my code to:

$string = @WindowsDir & "\System32\inetsrv\rewrite.dll"
ConsoleWrite(FileExists($string))

But this code also does not work. I tried to run it as administrator but this also didn't work.

What am I doing wrong?

Regards,

lrstndm

Share this post


Link to post
Share on other sites
lrstndm

Why does that matter?

So for a 32-bit machine I need to compile a 32 bit version. And for a 64-bit machine I need to compile a 64 bit version?

What changed in the meantime? Because this always worked for me?

 

Share this post


Link to post
Share on other sites
HAL9000

on my system windows 8.1 64 bit with the last version of autoit

run script x86  @systemDir   =  C:\Windows\SysWOW64

run script x64  @SystemDir   = C:\Windows\system32

the same if i compile the script

 

Edited by HAL9000
i was wrong

Share this post


Link to post
Share on other sites
Jos

Which makes sense right as that is the way Microsoft solved the coexistence of X84 and X86 programs.

Jos 


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites
lrstndm

Is it possible to disable (or something else) this. So that it always checks this good.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$string = @WindowsDir & "\System32\inetsrv\rewrite.dll"
ConsoleWrite(FileExists($string))

I currently changed the code with the above code. The UseX64 has to be on 'y' because else it returns 0 (file not exists).

But when I check the string variable is says the exact same value. I just cannot imagine how this could be wrong.

Is it possible someone explains this?

Share this post


Link to post
Share on other sites
Jos

It seems you do not understand yet how windows handles the mixed x64 and x86 processes on an x64 Windows version.
Maybe you need to do a little more reading on that. :)

Either way, a couple of questions before being able to give you the right answer:

  • Do the computers, that run this script, all have an X64 OS installed?
  • What exactly is it you want to test for: the existence of rewrite.dll in the X86 or x64 world?
  • What action should this lead to based on the found information?

Jos


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites
lrstndm

The problem is that the same code works on a Windows Server 2008 R2 (64-bit system) both the 32-bit and 64-bit compiled code. But on a WIndows 10 (64-bit system) only the 64 bit compiled code works. I don't know how this is possible.

Share this post


Link to post
Share on other sites
jguinch

Have a look at the _WinAPI_Wow64EnableWow64FsRedirection function :

#include <WinAPIFiles.au3>

MsgBox (0, "", FileExists(@WindowsDir & "\System32\inetsrv\test") )

_WinAPI_Wow64EnableWow64FsRedirection ( False )
MsgBox (0, "", FileExists(@WindowsDir & "\System32\inetsrv\test") )

 

Share this post


Link to post
Share on other sites
lrstndm

Thank you jguinch. That fixed the problem!

Do you know why this came just up today with me jguinch?

Is this because of the update from Windows 10?

Edited by lrstndm

Share this post


Link to post
Share on other sites
jguinch

Share this post


Link to post
Share on other sites
lrstndm

Thank you again:) That helped a lot.

Edited by lrstndm

Share this post


Link to post
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

  • Similar Content

    • PramodR
      By PramodR
      Hello,
      I have to execute below block of code in elevated previllage, as that particular wmic class will work only with admin previlage.
      i am getting out put when i launch autoit as administrator,  but i will not be able to launch autoit as admin in this particular case but my user have admin rights.
      is there any better way i can run those command as administrator.?
      tried below steps:
      i have tried #RequireAdmin but that creates a user prompt  Tried using Runas command but gives error as wrong username or password , stuck with that step.  
       
    • dwaynek
      By dwaynek
      traytip isn't working in windows 10. nothing happens when i use the Traytip command.
      here's a simple script i used:
      TrayTip("I'm a title", "I'm the message", 5) i tried changing the registry setting HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced ( which didn't have EnableBalloonTips) and creating a DWORD entry called EnableBalloonTips and setting it to 1 and logging off then back in. that did not resolve the problem.
      i'm running Windows 10 v1709 b16299.431
    • antonioj84
      By antonioj84
      Hi all to the forum guru and expert I am trying to  automate this. in the registry  I have the network profile name network 2 and network   I want to  change their  CATEGORY  to Private .  Can someone lead me in the right direction.
      Private is 1 and Public is 0
      #RequireAdmin Global $sHKLMRoot = @OSArch = "x64" ? "HKLM64" : "HKLM" RegWrite($sHKLMRoot &"\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" ,'/v NetworkList /t REG_MULTI_SZ /d 00000000 /f') see  attached picture below
      Much appreaciate
       

    • PhoenixPRO
      By PhoenixPRO
      When I try to automate this install program I can not get any of the buttons to click with the "ControlClick" function or any mouse movement to move the mouse to the and click it.  My OS is Windows 10 64Bit.  I have tried both 32bit and 64bit installs of Autoit V3 to no avail.
      I could not even get the run command to start the program until I used the variation of the command below in the script.
      With the script below the install program starts but will not click the "Next" button no matter what I do.
      Any help will be greatly appreciated.
      Thanks in advance.
       
      #include <MsgBoxConstants.au3>
      Opt("MouseCoordMode", 0) ;1=absolute, 0=relative to active window, 2=client
      Local $Success
      Run(@ComSpec & " /c " & 'C:\PhoenixPro_Install\RDXUtil\RDX_Tools_setup.exe', "C:\PhoenixPro_Install\RDXUtil", @SW_HIDE )

      WinWait("RDX Tools 1.62 - InstallShield Wizard", "Welcome to the InstallShield Wizard for RDX Tools 1.62")
      WinActivate("RDX Tools 1.62 - InstallShield Wizard", "Welcome to the InstallShield Wizard for RDX Tools 1.62")
      ControlClick ("RDX Tools 1.62 - InstallShield Wizard", "Welcome to the InstallShield Wizard for RDX Tools 1.62", 1639, "left", 1) ;Next Button
    • TheWizEd
      By TheWizEd
      How do I work with 2D arrays.  I've tried this but get errors.
      Local $aTest[4][4] = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
      ;$aTest[0][] = [10,11,12]  ; Error at []
      Local $sTest = ""
      For $i = 0 To UBound($aTest)-1
        Local $aExtract = _ArrayExtract($aTest,$i,$i)
        $sTest = $sTest & MyTest($aExtract)
      Next
      Func MyTest($aTemp)
        _ArrayDisplay($aTemp)
        ; Error at    v $aTemp
        Return String($aTemp[0]) & " - " & String($aTemp[1]) & " - " & String($aTemp[2]) & @CRLF
      EndFunc
       
       
×