Where/how to begin programming

Posted on 2006-05-31
Last Modified: 2012-06-21

I am willing to learn programming. I can do some simple batch files but i really need to go advanced. What i am into is writing removal scripts. First for some softwares and then for some malware infections to begin programing.

1- What language should i start learning ? Which language would be the most efficient and easier( doesnt necessarily need to be very easy- i like challenges-) to use to 1) remove files 2) remove registry entries 3) modify registry entries

2- What are the good softwares would allow me to monitor changes created by the malware infections in the system. I have been using regmon and filemon and for the installations i am using installwatchpro. Would you have any recommendations ?

Thank you for your time.
Question by:Purple_Sky
    LVL 15

    Assisted Solution

    Hi Purple_Sky,

    I recommend Python (
    You can start with "Dive into Python" (

    LVL 24

    Accepted Solution

    Difficult to judge really. You'll get as many answers as answerers. And you have choosen to get into an edge where you have to know very much about the lowest level you can get (nearly) So if you realyl want to work in that area you have to learn Assembler and C. C is the programming language used to build nearly all the current operating systems in use. The whole win API is based on C. You can do nearly everything on a Windows box with C and probably some inline Assembler.

    However you requirements do not indicate that you really want to go that deep. E.g removign files can be done with every language under the sun (run locall of course). Working with the registry are just a handful C functions so even if you language do not have them wrapped up for you then you can do that quite easy on you own.

    The Python tip is fair one. And it's really a matter of taste. I once did some Python programming, but I dislike it for trivial reasons; there are so many "magic" things to implement to get OO. Why e.g. must an creator look like this
    __init__ ?, it's support for functional programming is relative meager.

    However it is quite easy to read and there are books available for learning it. Quite some interesting software has been written in it. However you might check the following alternatives also:
    1) Perl   One can argue that Perl is somehow part of the "Internet" since it's beginning. It has a very large library available. Perls scripts however tend to look quite "cryptic". See e.g the postings of ozo, he uses Perls for everything and beyond.

    2) Ruby My favourite of the mentioned Scripting language. I can do whatever Python or Perl can but looks much for readable to my eyes then Perl is on paris with Python. Better solved is the while object oriented programming stuff in it then in either Python or Perl. It offers quite a bunch elements for functional programming, but is on pari in with Perl IMHO.

    3) Tcl/tk Very simply to some extend, really great for taking string apart and put them back together. Used as main scripting language in the AOLServer and integral part of OpenACS Comes with the "legendary" expect facilites for steering command line applications.
    And it's tk part is partly the "GUI"-Toolkit for all the other programming language mentioned here. The Tcl/TK stuff works on Windows, Unices and Macs AFAIKT. So if you want to put together a few GUI frontends to you stuff, TK Is quite an option.

    Does not have any OO-Facilities built-in, but offers a range of extension for doing OO Programming. One "advantage" over the others it that you can write software which writes tcl/tk for you. Of course you can generate Python, Perl or Ruby also but it's not as easy as for Tcl/tk

    If you feel that you simply want to learn something fast, you should try Smalltalk also. You can start you journey into it with squeak

    Howver there are other languages worth having a look
    Common Lisp
    Prolog etc


    LVL 7

    Assisted Solution

    For system snapshots configsafe is probably the simplest to use and administer: IBM used to ship it on all their systems about 6 years ago
    and I loved it.

    You can get it now from for about $35.00 USD.

    As for stepping up from batch scripting, thats easy: perl or visual basic
    perl is a high speed powerful language, the ActiveState implementation ($0.00) has full support for the windows Registry.

    The nice thing about perl is that it is extremely powerful and well supported on pretty much any platform (Windows/Solaris/AIX/Linux/...)

    The other approach is Visual Basic embedded in Windows Script Host.  Since WSH is installed on all microsoft platforms from windows 2000 up,
    the support is readily available.  "VB" is reasonably easy to get started in and there are several tutorials to get you started


    ------------- CUT HERE -----------------
    Dim list
    for each Process in GetObject("winmgmts:").InstancesOf("Win32_Process")
        list = list & Process.Handle & _
               " " & Process.Name & _
               " " & Process.CommandLine  & _
               " " & Process.KernelModeTime & vbCrLf
    WScript.Echo list
    ------------- CUT HERE -----------------

    Save this as c:\procs.vbs and double click it, it will list all running processes on your machine

    WSH Has a pretty big bang for your buck, but perl has MUCH more industry support

    LVL 32

    Assisted Solution

    If you want to invest some time and do programming as a profession, then definitely start with C++ and perhaps look into C#. I am assuming you want to mainly stay with the Windows platform.
    LVL 20

    Assisted Solution

    >>1- What language should i start learning ?
    This depends on what your final purposes are... I personally started with Pascal because that is what was required at school :) Then C and C++ in the univercity, now I consider myself a Java developer (although I write on a lot of others). But whatever you decide - it is important to learn the basis... once you get them, learning a new language is not that bad....

    >> 1) remove files
    Any :)
    >> 2) remove registry entries
    Well... I would say any although languages like Java do not really have a good way to do this ( other from calling a OS-native code in most cases written in C)
    >> 3) modify registry entries
    Same as above

    Basically there is no such thing as the perfect language. :)
    LVL 6

    Assisted Solution

    Hello Sir,

      If it has to be platform independent, you're probably looking at Java.

    Now, if you want to use C++, you could.  However, you'd have to be very careful how you did things.  You'd have to use something like wxWidgets for your GUI and very strictly standardized C++; probably using the gnu compiler to ensure compatibility between windows and linux (are you throwing in mac, too?).  You'd want to compile and run your app on each OS while in development to make sure that your app sitll works as you work on it.  And all of this might be more hassle than it's worth.  Here's some info:

    IMHO, a "compile once, run anywhere" app is still probably going to take you down the java road...

    and also check the following site which helps you to decide between VB and Delphi

    with regards,
    LVL 7

    Expert Comment

    padmaja: most of the languages describe are "write once run anywhere" Perl,Python,TCL, etc...

    You definately do not want to do system admin work with C/C++ or Java.  

    Some samples: Deleting Files

    Perl ------------
    unlink("C:\\Documents and Settings\\All Users\\virus.exe");
    ------------------- CUT HERE ---------------

    Visual Basic with Windows Script Host
    ------------------ delete.vbs ---------------
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set aFile = fso.GetFile("C:\Documents and Settings\All Users\virus.exe")
    ------------------- CUT HERE ---------------

    Using the registry:
    ------------------- ---------------------
    use Win32::Registry;

    my $hive = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
    my ($hkey, %value_list, $key);


    print "$hive values\n";
    foreach $value (keys %value_list) {
          print "$value\n";
    ------------------- CUT HERE ---------------

    Visual Basic with Windows Script Host
    ------------------ listentries.vbs ---------------
    Set WshShell = WScript.CreateObject("WScript.Shell")

    WScript.Echo WshShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MSMSGS")
    ------------------- CUT HERE ---------------
    (Note that VBS does not allow you to directly list what entries there are, but perl does)
    LVL 20

    Expert Comment

    And delete file Java:
    (new File("filename")).delete();

    Registries are tough in Java but the simple deletion is not a problem at alll....
    LVL 4

    Author Comment

    Thank you all for the great advices.

    Initially I am not planing to go very hardcore with the programing BUT if I like enjoy it ( i am sure I will ) why not. i am planing to stick with the windows platform.

    Seems like I am going to start with perl, python and/or vbs then advance to C++ and Java as needed.

    Are there any other monitoring tools you can recommend ?

    Again thank you for your time and all informing replies.
    LVL 7

    Expert Comment

    Besides configsafe?  The closest i've seen is Norton's GoBack, but it doesn't tell you what changed where configsafe does.

    Any ideas out there?
    LVL 4

    Author Comment

    Thank you all :)
    LVL 32

    Expert Comment

    Thanks. You can't go wrong with the utilities from Sysinternals. They also have an excellent page with useful programming tips:

    Also highly recommended: and

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    IT, Stop Being Called Into Every Meeting

    Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

    Suggested Solutions

    Title # Comments Views Activity
    Window placement 17 55
    Changing the installation path of this MSI 5 74
    c# combobox autocomplete behavior 6 62
    countX 22 49
    Have you tried to learn about Unicode, UTF-8, and multibyte text encoding and all the articles are just too "academic" or too technical? This article aims to make the whole topic easy for just about anyone to understand.
    Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
    Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
    In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

    758 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    13 Experts available now in Live!

    Get 1:1 Help Now