Jump to content
lrstndm

FileExists not working on System32

Recommended Posts

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

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

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

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

Jos 


SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     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

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

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


SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     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

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

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

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

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

    • By gahhon
      I have a application that have a function is to create a shortcut to desktop, lets say is ChromePortable.lnk.
      $iCreate = FileCreateShortcut($DIR_WA_FOLDER & '\GoogleChromePortable.exe', $DIR_SHORTCUT, $DIR_WA_FOLDER, '--kiosk "https://example.com/"') So the shortcut will be launch as kiosk mode and force to enter the specific website. However, the user is still able to right-click on the shortcut and modify the target value to remove the kiosk mode. What can I do to disable the user to editing the target value?
      So far, I had asked and tried from SuperUser for advises Disable Shortcut Target Field
      icacls "ChromePortable.lnk" /GRANT EVERYONE:RX So this will set the permission of this shortcut file to only Read & Execute only! But after I set it, the user is still can modify.
      Please kindly advise.
      Please note and assume that user don't have Administration account or etc, that should be only have 1 account to logon to the computer.
       
      EDIT:
      I must disable inheritance to remove all others permissions like SYSTEM, ADMINISTRATORS, etc. Then only GRANT everyone for READ & EXECUTE only.
      But still the user can go to edit the permissions tho. Any advise?
    • By ur
      When I compiled my script or any script to exe using 32 bit compiler and ran on 32 bit machine, I am getting below error.
       

       
      But it is 32 bit only.
       
      And, for testing, I disabled smart screen also, but same issue.
      Please suggest.
       
    • By sadakathullah
      Hi All, I am new to AutoIT and exploring options to use it in my organization. I tried couple of examples and it is fantastic. I am trying to run restrictions test in a pc to see if certain options are disabled like print screen, mstsc etc. I could not get a hang of it. Any help is much appreciated.
    • By stayready40
      Hello all. I created a script to uninstall Symantec from our environment and I placed the "BlockInput(1)" command in the beginning of the script so that end users would not be able to move the mouse or keyboard to disrupt the mouse clicks.
      During testing we found that this worked for our Windows 7 machines, but for our windows 10 machines the mouse disable did not work can anyone shed some light on why this is? 
      Here is my code:

       
    • By faustf
      hi guys
      i have a script  like this,  in windows 7 work perfect , in windows 10 not  work  , some one can explain me  why ??'
      #include <Array.au3> #include <MsgBoxConstants.au3> Global $aGPathFoto= FileReadToArray (@ScriptDir & "\TEMP\PathFoto.txt") Local $ctrl = 0 While 1 Local $hWnd = WinWait("[CLASS:#32770]", "", 10) If WinExists("[CLASS:#32770]") Then If $ctrl < 2 Then ControlSend($hWnd, "Choose File to Upload", "[CLASS:Edit; INSTANCE:1]", $aGPathFoto[0]&"{Enter}") Exit $ctrl += 1 Else ExitLoop EndIf EndIf WEnd $aGpathfoto = C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg
×
×
  • Create New...