It sounds as if you are using the Arduino IDE to "Upload using Programmer". If so; in the preferences enable Verbose output for upload. From this you should see all of the avrdude output. Not just the error message. Hopefully with this you will see signature of the chip you actually read. You will also see the full and exact avrdude.exe command that is being executed. Note the path/filename of the avrdude.conf, to ensure it is the one you changed.
Using this you can attempt it manually, and tweak it. Try adding the -F to it. Or execute the equivalent to :
avrdude -b 19200 -p atmega644p -C avrdude.conf -c stk500v1 -P COM4 -n
where the "-n" is "Do not write anything to the device." just read the signature.
I prefer to use a GUI in front of avrdude. Yuki's GUI is a good example. Just need to point it to the EXE and have a copy of the conf file in the same directory.
I should mention the Arduino way of doing this, is to create a new boards.txt file with this chip and add (not change) the avrdude.conf file. This will allow programing either from selecting the correct board. but that is another subject.