Astalavista Posted May 3, 2005 Posted May 3, 2005 anyone have the silent install method for this baby?
MHz Posted May 3, 2005 Posted May 3, 2005 It is a NSIS installer. Use /S to install.Look out for the unsigned driver window + the reboot dialog, that will popup.
Astalavista Posted May 3, 2005 Author Posted May 3, 2005 @mhzI got as far as the /s then i get blocked by the Unsigned Driver.
MHz Posted May 3, 2005 Posted May 3, 2005 @mhzI got as far as the /s then i get blocked by the Unsigned Driver.I suspect that may not be a problem with your winnt.sif entry for unsigned drivers?Though, this Au3 script will check for it. It will close the reboot dialog as well.Sort the code with the comments showing arrows._SetupVirtualCloneDrive5.au3
Astalavista Posted May 4, 2005 Author Posted May 4, 2005 Is there a way to disable unsigned driver window completely?is it a service that we can turn of via registry tweaks?
coucou Posted June 1, 2005 Posted June 1, 2005 @MHz: I tested today yr .au3 installer with the latest release Virtual CloneDrive 5.1.1.1 , It check for unsigned drivers NOT close the reboot dialog.Here bellow i made mine which check for unsigned drivers and close the reboot dialog. Tested workingEnjoycoucou
oskingen Posted March 9, 2008 Posted March 9, 2008 There is a way to disable the unsigned driver prompt for virtual clone drive in vista sp1. I mean a command line i can use during the silent installation. something likecomand to disable unsigned driver....start /wait virtualclonedrive....command to enable unsigned driver...
dbradtbe Posted September 10, 2008 Posted September 10, 2008 I am pretty sure I have gotten this to work.Long winded approach though.First you need to start the install manually and when it stops at the untrusted driver stage look in the TEMP folder and find the sub folder that contains the extracted Clone Drive Files. Take a copy of the vclone.cat file in this folder.Cancel the installation. This may still say this has installed but the driver will not work. Just got to Add/Remove programs and remove it.Using the vclone.cat file from the files you copied right click and select properties.Select Digital SignaturesSelect Elaborate Bytes AG in the Signature list box.Click DetailsOn the Digital Signature Details window select the General TabClick View CertificateOn the Certificate window select the Details TabClick Copy to FileOn the Certificate Export Wizard window click NextI chose the Cryptographic Message Syntax Standard - PKCS #7 Certificates (.P7B) radio button and then ticked the Include all Certificates in the certification path if possible.Click NextSave the file to where you want to keep it.Click NextClick FinishClick OkClose all the open windows.Now to pre import the certificate into the certificate store so that the software will install silently I used the following command line with administrative priviledges.certutil -addstore "TrustedPublisher" vclone.p7bThis import the certificate that we exported before and now runsetupvirtualclone.exe /S to install silently.So with a little prepartion it should be possible to completely silently install Virtual Clone DriveWith these two commands.certutil -addstore "TrustedPublisher" vclone.p7bsetupvirtualclone.exe /S
rodyefew Posted August 2, 2009 Posted August 2, 2009 Hi There,I've tried the certificate import method on XP, to no avail.I've adapted some code, credit to the following:/* This program turns the Driver signing Policy On/Off for Windows XP * Written by Stefan `Sec` Zehl <sec@xxxxxx>, 15.11.2004 * * Thanks to sysinternals.com for regmon and apispy * to msdn.microsoft.com for windows reference * to cygwin for their environment */See also, at http://www.911cd.net/forums/index.php?showtopic=19316and have come up with the attached exe file. Fixed some basic logic bugs. Works on my XP like this:@echo offSigVerifOnOff.exe offstart /wait SetupVirtualCloneDrive5432.exe /SSigVerifOnOff.exe ondel "C:\Documents and Settings\All Users\Desktop\Virtual CloneDrive.lnk"cscript /nologo fixLetter.vbsI also ripped most of this code form somewhere to ensure a drive letter. Note that each instance of VCD will be changing instance numbers, so some more smarts needs to be built into it:On Error Resume Next 'Device IDs DeviceID1 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&0&000" DeviceID2 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&1&000" DeviceID3 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&2&000" DeviceID4 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&3&000" DeviceID5 = "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&2AFD7D61&4&000" strComputer = "." Dim nRtn, WshShell Set WshShell = WScript.CreateObject("WScript.Shell") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive") Dim driveFound driveFound = FalseFor Each objItem in colItems 'WScript.Echo objItem.DeviceID & "=" & objItemDriveIf driveFound Then Exit ForSelect Case (objItem.DeviceID) Case DeviceID1 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID_2 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID3 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID4 x = ChgDrv ("I:", objItem.Drive) driveFound = True Case DeviceID5 x = ChgDrv ("I:", objItem.Drive) driveFound = True End Select Next Function ChgDrv(Drive, theDrive) If theDrive <> Drive Then wscript.echo theDrive & " => " & Drive 'Create File strFilename = "chgdrv" & Left(Drive,1) & ".txt" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile(strFilename) objFile.Close 'Write Data to File Set objFile = objFSO.OpenTextFile (strFilename, 2) objFile.WriteLine "select volume " & theDrive objFile.WriteLine "assign letter=" & Drive objFile.WriteLine "exit" objFile.Close 'Run Diskpart calling the script just created strRun = "diskpart /s " & strFilename nRtn = wshShell.Run(strRun, 2 , True) 'Delete File objFSO.DeleteFile(strFilename) Else WScript.Echo "Drive is already " & DriveEnd If End FunctionLet's see if this .exe posts...SigVerifOnOff.exe
rodyefew Posted August 2, 2009 Posted August 2, 2009 (edited) And the single-file source code for the same exe above. Compiles in VS2008.Doesn't need / use any funny header / resource file (stdafx, etc).As a person who doesn't understand C++ very well at all, those files confuse the nuts out of me.Just remove them after creating a new project, paste this source code in, and try to compile.I hope MS doesn't change the algo. Edited August 2, 2009 by rodyefew
rodyefew Posted August 8, 2009 Posted August 8, 2009 (edited) Just want to add that the version posted above relies on VC++ 2008 runtime being installed.I'm attaching a version that should be statically linked (slightly larger).Please let me know how you go!SigVerifOnOff.exe Edited August 8, 2009 by rodyefew
deoren Posted March 12, 2010 Posted March 12, 2010 Just want to add that the version posted above relies on VC++ 2008 runtime being installed.I'm attaching a version that should be statically linked (slightly larger).Please let me know how you go!I know this is an older post, but do you have updated source that you could post or link to? Thanks for the tool. I've been looking for a way to automate the installation of VirtualCloneDrive for a while now.
rodyefew Posted March 13, 2010 Posted March 13, 2010 I know this is an older post, but do you have updated source that you could post or link to? Thanks for the tool. I've been looking for a way to automate the installation of VirtualCloneDrive for a while now.I've only tested this on XP 32-bit. I dare-say that there may be UAC issues and other untolds with any combination of Win V/7/64. Will be interested in hearing feedback. Here's the somewhat modified code. Full credits where due.#include <windows.h>#include <wincrypt.h>#include <stdio.h>#define HP_HASHVALUE HP_HASHVAL/* This program turns the Driver signing Policy On/Off for Windows XP * Written by Stefan `Sec` Zehl <sec@xxxxxx>, 15.11.2004 * * Thanks to sysinternals.com for regmon and apispy * to msdn.microsoft.com for windows reference * to cygwin for their environment */void MyHandleError(char *s){ printf("Error: %s, number %x\n.",s,(unsigned int)GetLastError()); exit(1);}//--------------------------------------------------------------------int main(int argc, char* argv[]){ if ((argc < 2) || (argc > 2)) { printf( "usage: %s [on|off]", argv[0] ); exit(1); } //printf("argc = %x\n",argc); //for(int i = 0; i < argc; i++) // printf("argv[%x] = %s\n",i,argv[i]); //return 0; BYTE ignoreOn; if (strcmp(argv[1], "on")) { ignoreOn=0; } else if (strcmp(argv[1], "off")) { ignoreOn=1; } else { printf( "usage: %s [on|off]", argv[0] ); exit(1); } printf("yay=%x",ignoreOn); //exit(1); HCRYPTPROV hCryptProv; HCRYPTHASH hHash; BYTE data[16]; DWORD len; DWORD seed; HKEY hkey;// BYTE ignoreOn=0; // This is the On/Off toggle char input[4]; int x; // HKLM\System\WPA\PnP\seed if(RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"System\\WPA\\PnP", 0, KEY_READ, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegQueryValueEx( hkey, L"seed", NULL, NULL, (BYTE*)&seed, &len )==ERROR_SUCCESS){ printf("RegQueryValue sucess\n"); }else{ printf("RegQueryValue failure\n"); }; if(hkey) RegCloseKey(hkey); printf("Seed=%x\n",(unsigned int)seed); if(CryptAcquireContext( &hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) // flag values { printf("A cryptographic context has been acquired.\n\n"); } else { if (GetLastError() == NTE_BAD_KEYSET) { if(CryptAcquireContext( &hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)) { printf("A new key container has been created.\n"); } else { printf("Could not create a new key container.\n"); exit(1); } } else { printf("A cryptographic service handle could not be " "acquired.\n"); exit(1); } } // End of else. //-------------------------------------------------------------------- // Create a hash object. if(CryptCreateHash( hCryptProv, CALG_MD5, 0, 0, &hHash)) { printf("An empty hash object has been created. \n"); } else { MyHandleError("Error during CryptBeginHash!\n"); } //-------------------------------------------------------------------- // Compute the cryptographic hash on the data. input[0]=0; input[1]=ignoreOn; // This is the Value! input[2]=0; input[3]=0; if(CryptHashData( hHash, (BYTE*)input, sizeof(input), 0)) { printf("The data has been hashed. \n"); } else { MyHandleError("Error during CPHashData!\n"); } //-------------------------------------------------------------------- if(CryptHashData( hHash, (BYTE*)&seed, sizeof(seed), 0)) { printf("The data has been hashed. \n"); } else { MyHandleError("Error during CPHashData!\n"); } //-------------------------------------------------------------------- len=sizeof(data); if( CryptGetHashParam( hHash, HP_HASHVALUE, data, &len, 0)) { printf("The hash has been retrieved. \n"); } else { MyHandleError("Error during CPGetHashParam!\n"); } //-------------------------------------------------------------------- // Clean up. // Destroy the hash object. if(hHash) { if(!(CryptDestroyHash(hHash))) MyHandleError("Error during CryptDestroyHash"); } // Release the CSP. if(hCryptProv) { if(!(CryptReleaseContext(hCryptProv,0))) MyHandleError("Error during CryptReleaseContext"); } printf("Hash: "); for(x=0;x<sizeof(data);x++){ printf("%x ",data[x]); }; printf("\nCreate md5 hash completed without error. \n"); //-------------------------------------------------------------------- // HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash if(RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Setup", 0, KEY_WRITE, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegSetValueEx( hkey, L"PrivateHash", 0, REG_BINARY, data, sizeof(data) )==ERROR_SUCCESS){ printf("RegSetValueEx sucess\n"); }else{ printf("RegSetValueEx failure\n"); }; if(hkey) RegCloseKey(hkey); //-------------------------------------------------------------------- // HKLM\Software\Microsoft\Driver Signing\Policy if(RegOpenKeyEx( HKEY_CURRENT_USER, L"Software\\Microsoft\\Driver Signing", 0, KEY_WRITE, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegSetValueEx( hkey, L"Policy", 0, REG_BINARY, &ignoreOn, 1 )==ERROR_SUCCESS){ printf("RegSetValueEx sucess\n"); }else{ printf("RegSetValueEx failure\n"); }; if(hkey) RegCloseKey(hkey); //-------------------------------------------------------------------- // HKLM\Software\Microsoft\Driver Signing\Policy if(RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Driver Signing", 0, KEY_WRITE, &hkey )==ERROR_SUCCESS){ printf("RegOpenKey sucess\n"); }else{ printf("RegOpenKey failure\n"); }; len=sizeof(seed); if(RegSetValueEx( hkey, L"Policy", 0, REG_BINARY, &ignoreOn, 1 )==ERROR_SUCCESS){ printf("RegSetValueEx sucess\n"); }else{ printf("RegSetValueEx failure\n"); }; if(hkey) RegCloseKey(hkey); exit(0);}
bphlpt Posted March 13, 2010 Posted March 13, 2010 I appreciate you sharing the source, I always learn something by looking through the inner workings of a software project. But would you mind also sharing a compiled copy for convenience? Thanks in advance.Cheers and Regards
rodyefew Posted March 14, 2010 Posted March 14, 2010 I appreciate you sharing the source, I always learn something by looking through the inner workings of a software project. But would you mind also sharing a compiled copy for convenience? Thanks in advance.Cheers and RegardsAh - there's two versions linked a few posts back in this thread (just tried to download and it worked).One version requires VC2008 runtime and the other (larger) one doesn't.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now