Jump to content

MrJinje

Developer
  • Posts

    1,031
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    United States

Everything posted by MrJinje

  1. Interesting idea, which class ID is the folder lock.
  2. A slightly more offline method. Should save everyone about 3 minutes per re-installation. Dism /Mount-WIM /WimFile:C:\test\images\install.wim /Name:"Windows 8 Professional" /MountDir:C:\test\offlineDism /Image:C:\test\offline /Enable-Feature /FeatureName:NetFx3 /Source:X:\sources\sxsDism /Unmount-WIM /MountDir:C:\test\offline /Commit
  3. Your missing a language setting in the oobe pass. You've only configured the windowsPE pass for the first portion (winPE) of the install, and you'll need a second oobe setting to suppress the language page for the OS. See post 432 for details <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <InputLocale>en-US</InputLocale> <SystemLocale>en-US</SystemLocale> <UILanguage>en-US</UILanguage> <UILanguageFallback>en-US</UILanguageFallback> <UserLocale>en-US</UserLocale> </component>
  4. Thanks, but having a spot of trouble with me webby clicky thing and I get this error. Is the file small enough to attach here ?
  5. Sounds cool. Will have to check this out and report back.
  6. On second thought, Windows To Go would be less work. Create a custom image, clone it to some eSata drives and you are done. http://en.wikipedia.org/wiki/Windows_To_Go
  7. I add the $OEM$ folder structure inside the 'sources' folder on the DVD or USB. That way it gets copied to the correct location during install. http://www.msfn.org/board/topic/151863-oem-folders/ http://technet.microsoft.com/en-us/library/cc766228%28WS.10%29.aspx DVDRoot\Sources\$OEM$\$$\Setup\Scripts
  8. Can you try running them from the setupcomplete.cmd stage instead of first logon stage. Easier to use setupcomplete.cmd for 'system' or machine-wide settings and keep the first logon scripts for 'per user' settings. http://technet.microsoft.com/en-us/library/hh825167.aspx The reason why is that"Commands in the Setupcomplete.cmd file are executed with local system privilege." while your 'first logon' commands run with your users token (which may or may not be elevated). http://technet.microsoft.com/en-us/library/cc766314%28v=ws.10%29.aspx
  9. Easy way, Fedex them an installation disk and walk them through it on the phone. Hard way is to set up your network to perform a wan install. At my office we use Altiris and PXE boot to push images, but you can probably make do with WDS. The trick is that a client machine on each lan runs a dhcp or "pxe relay service" to push the PXE request across the router fabric to the remote altiris server (or WDS, or TFTPD32, or GRLDR or any other remote install method i've missed, like iscsi or ccboot). We do this because 'usually' a PXE request from bare metal doesn't leave the lan segment it is on. Note: It takes longer over a VPN/wan connection but it can be done. @Jaclaz, How do we do this without using any costly softwares. I seem to recall DHCP option 66 or 67, but it is late, maybe the op should google that for me.
  10. Hey Nuhi, keep up the hard works. Got any details on your v-78 product yet ?
  11. Good work max. Check this out, it's a "metro" style rewrite of the old regedit jump trick. Not as nice as yours, but it does the trick. Got any ideas on how to push a shell ext onto the taskbar /clock area ? Looking for any work-around that is right click available during maximized browser viewing and avoids switching to an explorer window or the desktop to right click. http://forums.mydigitallife.info/threads/38208-Open-Regedit-directly-to-a-key
  12. Thanks for the tip, I am running it with Set-ACL, seems to be working on W8. Not sure I will need Set-ACL once I try it from SetupComplete.cmd which runs as system already. SetACL -on "HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}" -ot reg -rec yes -actn setowner -ownr "n:S-1-5-32-544"SetACL -on "HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}" -ot reg -actn ace -ace "n:S-1-5-32-544;p:full"Remove-ItemProperty -Path "registry::HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}" -Name RunAs# and to enable linked connectonsNew-ItemProperty -Path "registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLinkedConnections" -Value 1 -PropertyType "DWord"
  13. Hey Walrus, if you want to try editing the registry as trustedinstaller without changing permissions, might be easier with the dvexexec.exe tool devxexec.exe /user:TrustedInstaller regedit.exe Or maybe you can edit this snip to reg add as TrustedInstaller at the command line. Keeps it simple and stupid, compared to batch scripting SetACL take ownership. EDIT: It cannot pass a variable to the command line, but it can run a batch file directly, so that's a start. devxexec.exe /user:TrustedInstaller mybatch.cmd reg add HKLM\Wim_Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.delete /v "Icon" /t REG_EXPAND_SZ /d "C:\pathto\myicon.ico"
  14. My bad, forgot to post the get-wiminfo cleanup routine. So far I've got it working from a batch file. Basically I hard-coded a 15 member array, parse the first 15 images of get-wiminfo results (if that many exist) and deletes any blank rows. The remaining rows pre-populate the text portion of the VB inputbox. Short names (like Windows 7 Pro, Windows 7 Home) show 2 on a line, and longer names wrap as shown in my pic. Have not found a way to add vbcrlf, 'r'n or [environment]::Newline to force new rows. The mechanics of it are sound, but still needs work on the formatting and had planned on re-writing it shorter using some looping logic (which would remove the 15 image limitation of this snippet), but have not found the time. I troubleshoot single line powershell from .cmd files before going to the registry to make things easier on myself. If you wanted to port back to normal powershell, split rows into readable chunks on the semi-colons ;;;; and then you can run the innards of the -command like normal (and use an IDE for troubleshooting). $de = Image Index #: The #6 item in the get-wiminfo results array + every 5th item afterwords (6,11,16,etc) is the image index #, save for the last item which is "The operation completed successfully." (removed from array via script) $ce = Version Name: The #7 item in the get-wiminfo results array + every 5th item afterwords (7,12,17,etc). $ee = the filtered and formatted "Index#:Name" results that passes to the inputbox. Maybe we should convert this array to an $fe string and manipulate before passing to the input box. Get-wiminfo-tester.cmd - added some invisible rows to the code box to make it easier to select/copy. @ECHO OFF start /wait /b powershell -command "$WIM_FILE = 'A:\install.wim';$de = dism /get-wiminfo /WimFile:$WIM_FILE;$de = $de[6,11,16,21,26,31,36,41,46,51,56,61,66,71,76];$de = @($de | Where-Object {$_ -ne 'The operation completed successfully.'});$de = $de | Foreach-Object {$_ -replace 'Index :', ''};$de = $de | Foreach-Object {$_ -replace ' ', ''};$de;$ce = dism /get-wiminfo /WimFile:$WIM_FILE;$ce = $ce[7,12,17,22,27,32,37,42,47,52,57,62,67,72,77];$ce = @($ce | Where-Object {$_ -ne 'The operation completed successfully.'});$ce = $ce | Foreach-Object {$_ -replace 'Name :', ''};$ce = $ce | Foreach-Object {$_ -replace ' ', ''};$ce = $ce | Foreach-Object {$_ -replace 'WindowsServer', 'Server'};$ce;$ee = ':' , ':',':',':',':',':',':',':',':',':',':',':',':',':',':';$ee[0] = $de[0] + ':' + $ce[0];$ee[1] = $de[1] + ':' + $ce[1];$ee[2] = $de[2] + ':' + $ce[2];$ee[3] = $de[3] + ':' + $ce[3]; $ee[4] = $de[4] + ':' + $ce[4]; $ee[5] = $de[5] + ':' + $ce[5]; $ee[6] = $de[6] + ':' + $ce[6];$ee[7] = $de[7] + ':' + $ce[7]; $ee[8] = $de[8] + ':' + $ce[8];$ee[9] = $de[9] + ':' + $ce[9]; $ee[10] = $de[10] + ':' + $ce[10];$ee[11] = $de[11] + ':' + $ce[11];$ee[12] = $de[12] + ':' + $ce[12];$ee[13] = $de[13] + ':' + $ce[13];$ee[14] = $de[14] + ':' + $ce[14];cls;$ee = @($ee | Where-Object {$_ -ne ':'});$ee;cls;[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$INDEX = [Microsoft.VisualBasic.Interaction]::InputBox($ee, 'Which image to mount','1');If ($INDEX -eq '') {exit} Else{Dism /mount-wim /wimfile:$WIM_FILE /index:$INDEX /mountdir:C:\\zMountDir}" It's hardcoded to A:\Install.wim for testing. But you should be able to drop your %1 in it's place. All the other locations refer to $WIM_FILE once in powershell. I couldn't get it to work from the registry yet, but I've only spent about 5 minutes on that so far (yep you guessed it, it was the 5 minutes before I decided to make this post)
  15. Thanks will try that. Found a possible option for leaving UAC on and requesting elevation inline. If you check the last two lines, you'll also see a way to add a cmd.exe style 'pause' to Powershell. Most of it is comments, when I get time I will re-write it.. http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/09/23/a-self-elevating-powershell-script.aspx UPDATE, here is rewrite, removed comments, deleted fluff, replaced double quotes, added variables to reduce length, added semi-colons everywhere. $WID=[System.Security.Principal.WindowsIdentity]::GetCurrent();$WIP=new-object System.Security.Principal.WindowsPrincipal($WID);$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator;if ($WIP.IsInRole($adminRole)){}else{$newProcess = new-object System.Diagnostics.ProcessStartInfo 'PowerShell';$newProcess.Arguments = $myInvocation.MyCommand.Definition;$newProcess.Verb = 'runas';[System.Diagnostics.Process]::Start($newProcess);Write-Host 'Prompting for Elevation';exit;}Write-Host 'ElevatedCodeRunsHere';Write-Host -NoNewLine 'Press any key to continue...';$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); and here's a snip regarding execution policy (for those who scrolled all the way to the end) http://www.nivot.org/nivot2/post/2012/02/10/Bypassing-Restricted-Execution-Policy-in-Code-or-in-Script.aspx function Disable-ExecutionPolicy { ($ctx = $executioncontext.gettype().getfield( "_context","nonpublic,instance").getvalue( $executioncontext)).gettype().getfield( "_authorizationManager","nonpublic,instance").setvalue( $ctx, (new-object System.Management.Automation.AuthorizationManager "Microsoft.PowerShell")) }
  16. Right Click > New > Shortcut. Paste the rundll32 cmd as the 'Item Location' (including the full path to your xlsx). Windows thinks the shortcut is to Rundll32.exe and doesn't group it with other excel file types so that it can be placed in the taskbar and open your file directly.
  17. do you mean on the taskbar or beside it in it's own section. To avoid my shortcuts being taken over by Excel.exe and my xls being a sub-pinned item, I do something a little sneaky so that my shortcut doesn't know it's really starting excel. Then put that shortcut file in a folder, link the folder as a toolbar, remove text and title and I get an icon on the right of my taskbar. %windir%\System32\rundll32.exe url.dll,FileProtocolHandler D:\MYEXCELFILE.xls
  18. Made a re-write (closes properly on input box cancel, avoids second message box/switch pop up, and cmd /c kills the cmd window afterwords), overall it seems much cleaner. When an input box is canceled it returns a null value, now that I know, this snip checks for that and exits. Else it runs the command without having to go into the second pop-up window. If the CMD /C kills the command window before it's done mounting try CMD /K (that might have been why I used it in the first place for DISM) This is what's going into my next SLMGR, chop it up and edit your DISM bits in. @="elevate cmd /c start /b powershell -command \"clear-host;[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$KEY = [Microsoft.VisualBasic.Interaction]::InputBox('Enter Product Key', 'Enter a Product Key', 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX');If ($KEY -eq '') {exit} Else{wscript.exe C:\\Windows\\System32\\slmgr.vbs -ipk $KEY}\"" Got bored, copy pasta'd your snip into this. @="cmd /k start /b powershell -command \"clear-host;[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$INDEX = [Microsoft.VisualBasic.Interaction]::InputBox('Enter Image Index #', 'Which image to mount', '1');If ($INDEX -eq '') {exit} Else{Dism /mount-wim /wimfile:\"%1\" /index:$INDEX /mountdir:C:\\zMountDir}\"" Still working on a get-wiminfo integration, here is sneak peak. Not liking the word wrap, gonna spend a little more time on it.
  19. Yes, you should be able to. Here is an old VBS script that displays the BIOS SLIC data to get you thinking, I'd rewrite it in powershell if I was you. HP, Dell, every other MFG has a unique tag, just need query each machine to assemble your list, then write a CASE statement to apply your keys based on the WMI tag. The last else statement will catchall that do not have OEM tag and prompt for manual interaction to avoid any piracy issues. In theory it will only install your DELL key on a DELL machine and so forth. Good luck. strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_BIOS",,48) For Each objItem in colItems Wscript.Echo "Version: " & objItem.Version Next The certs can be loaded via the SLMGR command at the same time you install the key and would not be applied to machines that do not match. Whether or not this is allowed by Microsoft license I am unsure of, all I am saying is that it 'could' be done. There may be an obscure stipulation that corporations cannot do this for customers unless they have their own physical media, contact your lawyer. Mr Jin-Jay is not role a model. He's not even human. Some of the things he says and does could cause a person to get hurt, expelled, arrested, possibly deported. To put it another way: Don't try this at home.
  20. What happens when you try to install the i586 manually. Try it without the silent switches (in your VM) and see if any errors pop up.
×
×
  • Create New...