• Announcements

    • xper

      MSFN Sponsorship and AdBlockers!   07/10/2016

      Dear members, MSFN is made available via subscriptions, donations and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, become a site sponsor and ads will be disabled automatically and by subscribing you get other sponsor benefits.
Sign in to follow this  
Followers 0
Jeffery

Trying to migrate 2 VBScripts into one.

31 posts in this topic

HI,

I'm trying to migrate 2 VBScripts that i found on the internet into one script.

The first Scripts checks if the user has Admin Rights and the second script is a Key Changer.

But if i migrate this 2 scripts into one script and when i then execute it then it wants to add "relaunch" as a Key. :wacko:

'-> Begin of the Admin Right Check ScriptSet reg = GetObject("winmgmts://./root/default:StdRegProv")rc = reg.GetStringValue(&h80000003, "S-1-5-19\Environment", "TEMP", val)If rc = 5 Then  If WScript.Arguments.Count = 0 Then    CreateObject("Shell.Application").ShellExecute "wscript.exe" _      , Chr(34) & WScript.ScriptFullName & Chr(34) & " relaunch", "", "runas", 1    WScript.Quit  Else    WScript.Echo "Cannot acquire admin privileges."    WScript.Quit  End IfElse'-> Begin of the Key Changer ScriptOn Error Resume NextIf WScript.Arguments.Count<1 Then  VOL_PROD_KEY = InputBox ("This script will change the product key of:"&vbCr&"Windows XP SP1, SP2 and SP3."&vbCr&vbCr&"Enter a correct CD-Key in the blank field below:","Windows XP Key Changer")  If VOL_PROD_KEY = "" Then    WScript.Quit  End IfElse  VOL_PROD_KEY = WScript.Arguments.Item(0)End IfVOL_PROD_KEY = Replace(VOL_PROD_KEY,"-","")for each Obj in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("win32_WindowsProductActivation")  result = Obj.SetProductKey (VOL_PROD_KEY)  If Err.Number = 0 Then    WScript.Echo "Windows XP Product Key was changed successfuly."  End If  If Err.Number <> 0 Then    WScript.Echo "Error entering new product key: "&VOL_PROD_KEY&""&vbCr&vbCr&"Please verify that this Product Key was entered correctly and if it is a valid key."    Err.Number.Clear  End IfNextWScript.Quit
Edited by Jeffery
0

Share this post


Link to post
Share on other sites

How, EXACTLY, are you launching the script, ie what is the command line you are using? What were you expecting to happen? Also, for reference, give us the link(s) where you found these scripts? Is there a particular reason you were trying to combine these into a single script?

Cheers and Regards

0

Share this post


Link to post
Share on other sites

When double clicking on the script an input box should appear to enter a key and if the user has no admin rights then the Windows RunAs option should appear first.

The RunAs script i found at stackoverflow.com and the Key Changer script i found at pastebin.

Edited by Jeffery
0

Share this post


Link to post
Share on other sites

Well other than missing the last line -

End If

the above code looks fine to me and seems to run correctly. At least I get the input box when I tried it on my Win7 system. ( I cancelled it of course.)

Cheers and Regards

0

Share this post


Link to post
Share on other sites

Yes if you run only the Key Change Script but not if you migrate this 2 script i posted above into one.

0

Share this post


Link to post
Share on other sites

Not what I meant. I copied your exact combined script from above and added the last line and it worked for me in Win7.

Cheers and Regards

0

Share this post


Link to post
Share on other sites

I did this too and i get the same results and i tried it on Windows 7 and Windows XP. It only works if i run then Key Changer script without the RunAs script.

Are you sure the UAC option is on in your Windows 7 because if it is not then the RunAs Script will not run completely.

Edited by Jeffery
0

Share this post


Link to post
Share on other sites

I also used the "original" RunAs Script, and added some extra Echo'ed messages to make sure it got where I thought it was:

Set reg = GetObject("winmgmts://./root/default:StdRegProv")rc = reg.GetStringValue(&h80000003, "S-1-5-19\Environment", "TEMP", val)If rc = 5 Then  'return code 5 == access denied  're-launch script only when it was run without arguments, so we don't go  'in circles when admin privileges can't be acquired  If WScript.Arguments.Count = 0 Then    're-launch as administrator; the additional argument is a guard to make    'sure the script is re-launched only once    WScript.Echo "Relaunch."    CreateObject("Shell.Application").ShellExecute "wscript.exe" _      , Chr(34) & WScript.ScriptFullName & Chr(34) & " relaunch", "", "runas", 1    WScript.Quit 0  Else    WScript.Echo "Cannot acquire admin privileges."    WScript.Quit 1  End IfElse  WScript.Echo "Have Admin."  '-> Begin of the Key Changer Script ... the rest of your script here ...


But no, I'm an admin and I have UAC disabled, but I still got the "Have Admin" message then the input box was displayed.

Cheers and Regards

0

Share this post


Link to post
Share on other sites

The problem occurs if you have UAC enabled or if you are on a guest account. ;) You have UAC disabled that's why you don't get the same results as me. :)

Edited by Jeffery
0

Share this post


Link to post
Share on other sites

Then the problem is not the combining of the two scripts, but rather the function of the UAC script. Looks like you need to modify it in some way.

Cheers and Regards

0

Share this post


Link to post
Share on other sites

I tested the RunAs script also combined with another script and it works like it should there is only a conflict if i use it with the Key Changer script.

The point of the RunAs script is to check if a user has admin rights and if not then it promotes the user for elevated (Windows 7) or it promotes the user to run the script with a account which has admin privileges..

0

Share this post


Link to post
Share on other sites

So it works in all cases UNLESS:

1) you have UAC enabled or if you are on a guest account

- and -

2) you run the the RunAs script

- combined only with -

3) the Key Changer script

But otherwise both scripts work? Very specific, weird circumstances.

If nothing else I would suggest adding several echo messages to determine exactly where it goes wrong.

Cheers and Regards

Edited by bphlpt
0

Share this post


Link to post
Share on other sites

Here is what I can confirm

1:\ Windows 7 UAC enable

2:\ Created A User level account called Jake

3:\ Ran the from script Stackoverflow

Set reg = GetObject("winmgmts://./root/default:StdRegProv")rc = reg.GetStringValue(&h80000003, "S-1-5-19\Environment", "TEMP", val)If rc = 5 Then  'return code 5 == access denied  're-launch script only when it was run without arguments, so we don't go  'in circles when admin privileges can't be acquired  If WScript.Arguments.Count = 0 Then    're-launch as administrator; the additional argument is a guard to make    'sure the script is re-launched only once    CreateObject("Shell.Application").ShellExecute "wscript.exe" _      , Chr(34) & WScript.ScriptFullName & Chr(34) & " relaunch", "", "runas", 1    WScript.Quit 0  Else    WScript.Echo "Cannot acquire admin privileges."    WScript.Quit 1  End IfElse  'your code here  CreateObject("Wscript.Shell").Run("C:\Users\Jake\Desktop\RegistrationChanger.hta"),1,True  'WScript.Echo "Code Here With Admin Rights"End If
4:\ I was able to make reg changes that required admin rights, I had to supply

the admin right threw the standard UAC GUI.

Before Changes

post-5386-0-71617200-1397074405_thumb.pn

After Changes

post-5386-0-86996700-1397074416_thumb.pn

0

Share this post


Link to post
Share on other sites

Can somebody please tell me why UAC is an issue for a script intended for Windows XP?

0

Share this post


Link to post
Share on other sites

Maybe because of this

I did this too and i get the same results and i tried it on Windows 7 and Windows XP.

0

Share this post


Link to post
Share on other sites

To simulate this problem it is important to migrate the RunAs script and the Key Changer together and on Windows 7 UAC needs to be turned on or you have to be on a guest account without admin rights to simulate this problem.

Run_As_and_Key_Changer_script.jpg

0

Share this post


Link to post
Share on other sites

I tried my test on Win 7 UAC enable on account that had only user rights. The hta in my

script needed an admin account to make the changes to the registry keys, I was able to

make the changes on that regular user account.

0

Share this post


Link to post
Share on other sites

And it seems that the only difference between GSM's tests and that of Jeffery, is that GSM calls the external KeyChanger script while Jeffery tried to put it inline. Do I understand that correctly? Jeffery, if you try to break the KeyChanger script out into a separate file does that work correctly? I know you want it as a single file, but does it work as two files?

Cheers and Regards

0

Share this post


Link to post
Share on other sites

If i break the KeyChanger script out into a separate file then it works but as soon as i put them together in one file then they won't love each other anymore.

0

Share this post


Link to post
Share on other sites

Since I dont want to write the whole things for you, not my job I will point you in a direction that might help you. I added a function to the script from Stackoverflow that I called Input.

 Dim A Set reg = GetObject("winmgmts://./root/default:StdRegProv")rc = reg.GetStringValue(&h80000003, "S-1-5-19\Environment", "TEMP", val)If rc = 5 Then  'return code 5 == access denied  're-launch script only when it was run without arguments, so we don't go  'in circles when admin privileges can't be acquired  If WScript.Arguments.Count = 0 Then    're-launch as administrator; the additional argument is a guard to make    'sure the script is re-launched only once    CreateObject("Shell.Application").ShellExecute "wscript.exe" _      , Chr(34) & WScript.ScriptFullName & Chr(34) & " relaunch", "", "runas", 1    WScript.Quit 0  Else    WScript.Echo "Cannot acquire admin privileges."    WScript.Quit 1  End IfElse  'your code here ' CreateObject("Wscript.Shell").Run("C:\Users\Gunsmokingman\Desktop\RegistrationChanger.hta"),1,True  ' CreateObject("Wscript.Shell").Run("powerCfg -H Off")   Input()   WScript.Echo AEnd If   Function Input()     Input=InputBox( _     "Type In The New Key In This Format 12345-54321-12345-ABCDE-1A2B3.")     If Len(Input) = 29 Then A = Input     If Not Len(Input) = 29 Then         If MsgBox( _      "Does Not Appear To Have 29 Characters : " & Len(Input) & vbCrLf & _      "Would You Like To Redo Your Input, Yes To Redo," & vbCrLf & _      "No To Exit And Do Nothing?",4132,"Redo Or Quit") = 6 Then      Input()                Else           WScript.Quit      End If     End If    End Function
0

Share this post


Link to post
Share on other sites

Nobody has yet answered my basic question!

What is the point of the flow of this Topic? A Windows XP key changing script on Windows 7

0

Share this post


Link to post
Share on other sites

To expand on Yzöwl's question, according to this:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394520(v=vs.85).aspx

Requirements

Minimum supported client Windows XP

Minimum supported server Windows Server 2003

End of client support Windows XP

End of server support Windows Server 2003 R2

the win32_WindowsProductActivation class is non-existing on non-XP/2003.

jaclaz

0

Share this post


Link to post
Share on other sites

Nobody has yet answered my basic question!

What is the point of the flow of this Topic? A Windows XP key changing script on Windows 7

1:\ The user was asking for help on how to make the script work correct.

2:\ My understanding is that the user want to change some product keys on some OS that seems to have UAC enable.

3:\ Jaclaz your wrong List Windows Product Activation Status

0

Share this post


Link to post
Share on other sites

I do hope that both parties are sure of their facts...

...I'm staying out of this, but I know which one is correct! :whistle:

0

Share this post


Link to post
Share on other sites

2:\ My understanding is that the user want to change some product keys on some OS that seems to have UAC enable.

My understanding is very similar to yours, though I suspect that the OP is slipping (and indirectly bringing down you with him :ph34r:) on a chocolate-covered banana :w00t:, just in case:

http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/put-down-the-chocolate-covered-banana.html

I may be (rare, but it can happen ;)), but I did not actually state anything, I simply reported a source "as is".

Just for the record here:

http://gallery.technet.microsoft.com/scriptcenter/3209f9b8-842e-43a8-a36a-575226b6e8ed

there is this text:

Verified on the following platforms

Windows Server 2012 No

Windows Server 2008 R2 No

Windows Server 2008 No

Windows Server 2003 Yes

Windows 8 No

Windows 7 No

Windows Vista No

Windows XP Yes

Windows 2000 No

which may also be "wrong", but it is possibly a hint that the referenced page is actually "right" :whistle:

And, JFYI:

http://sqlblog.com/blogs/aaron_bertrand/archive/2011/03/13/ot-windows-activation-en-masse.aspx

Whenever I do anything with this number of machines, I assume there's an easy way to do it in PowerShell. My searching throughout the 'toobz led to many promising scripts; unfortunately, most dealt with the old WMI class used prior to Windows 7 and Windows Server 2008 R2: Win32_WindowsProductActivation. In the latest versions of the operating system, trying to utilize this class leads to generic "Invalid Class" errors; the methods and properties associated with this class have been split out into two new classes: SoftwareLicensingProduct and SoftwareLicensingService (did I mention I'm really glad they're moving away from the Win32_ prefix?).

jaclaz

Edited by jaclaz
0

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
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.