Page 2 of 2

Posted: Wed Aug 30, 2006 10:23 am
by Silvio
Exist a function in FW/xHARbour to Restart window's registry for the change to take effect without erestart window ?

Posted: Wed Aug 30, 2006 11:21 am
by Detlef Hoefner
Silvio wrote:I cannot restart windows
there is a possibility to restart using an function ?
If I restart the program ?
it must be made without restart window ...then If I want to show disc C I must restart window...


Silvio,

there is no need to restart Windows.
The drives should be immediatelly hidden.
You only have to refresh the Explorer.

Now the bad news: the FiveWin class treg32 seems not to be able writing REG_BINARY key values.
You can only write subkey values with type REG_DWORD and REG_SZ.

Antonio, am i right ?

Sorry Silvio, can't help you further.
Regards,
Detlef

Posted: Wed Aug 30, 2006 2:35 pm
by Ugo
Dear Silvio,
I use:

Code: Select all | Expand

   REGCREATEKEY( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", @hKey )
   REGSETVALUE( hKey, "NoDrives", 0, REG_DWORD, L2BIN( nVal ), 4 )
   REGCLOSEKEY( hKey )


With nVal is the value for hidden drives.
Is not necessary reboot windows.

Posted: Wed Aug 30, 2006 2:46 pm
by Silvio
thanks but wich parameter you give to these:

hKey
REG_DWORD
nval
because it me give an error Variables does not exist

Posted: Wed Aug 30, 2006 2:47 pm
by Silvio
now run ok

Posted: Wed Aug 30, 2006 3:33 pm
by RAMESHBABU
Hi all

In continuation of the subject, please post an example to show the hidden
drive(s) back.

Thanks in advance

- Ramesh Babu P

Posted: Wed Aug 30, 2006 4:01 pm
by Detlef Hoefner
RAMESHBABU wrote:Hi all

In continuation of the subject, please post an example to show the hidden
drive(s) back.

Thanks in advance

- Ramesh Babu P


Dear Ramesh,

just use a 0 ( zero ) and write it into the noDrives key.

Best regards,
Detlef

Posted: Wed Aug 30, 2006 5:11 pm
by RAMESHBABU
Dear Mr.Detlef

Thank you very much for your quick reply.

Please go through the following code and advise me where I am going
wrong.

With the following code I did not get the expected result.

Please correct it to get the hidden drive to appear back.

Once again thank you very much.

- Ramesh Babu P

#INCLUDE "fivewin.ch"

#define HKEY_CURRENT_USER -2147483647 // 2147483649

FUNCTION Main()

registra(0)

RETURN nil


*********

FUNCTION registra(nNumber)

oReg := TReg32():New(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\explorer")

oReg:Set("NoDrives", nNumber)

oReg:Close()

RETURN nil

**********



Posted: Wed Aug 30, 2006 7:00 pm
by Detlef Hoefner
Dear Ramesh,

as i already wrote, i fear that you can not write the desired values with the methods of class TReg32. At least i didn't succeed.

I think you must use the WinApi functions as Ugo showed us.

Code: Select all | Expand

Ugo wrote:

REGCREATEKEY( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", @hKey )
REGSETVALUE( hKey, "NoDrives", 0, REG_DWORD, L2BIN( nVal ), 4 )
REGCLOSEKEY( hKey )


HTH.
Best regards,
Detlef

Posted: Wed Aug 30, 2006 7:22 pm
by Antonio Linares
Detlef,

>
the FiveWin class treg32 seems not to be able writing REG_BINARY key values. You can only write subkey values with type REG_DWORD and REG_SZ.
>

We are going to review it. Thanks for the feedback :-)

Posted: Thu Aug 31, 2006 9:30 pm
by Silvio
Sorry Ugo,
But now it not run ok
I SEE THE HARD DISK C

THIS IS THE CODE :

Code: Select all | Expand

#INCLUDE "fivewin.ch"

#define HKEY_CURRENT_USER   -2147483647  // 2147483649

PROCEDURE Main()
   LOCAL hKey
   Local  REG_DWORD
   LOCAL nval
  nVal:= nDriveNum( "C" )
   ?  nVal
   REGCREATEKEY( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", @hKey )
   REGSETVALUE( hKey, "NoDrives", 0, REG_DWORD, L2BIN( nVal ),4 )
   REGCLOSEKEY( hKey )
RETURN


FUNCTION nDriveNum( cDrives )
LOCAL nRet := 0
LOCAL n    := 0
   for n := 1 to len( cDrives )
      nRet += 2 ^( asc( upper( substr( cDrives, n, 1 ) ) ) - 65 )
   next
RETURN( int( nRet ) )



Perhaps there is something wrong....

Posted: Fri Sep 01, 2006 9:10 am
by Ugo
Silvio wrote:Sorry Ugo,
But now it not run ok
...


Dear Silvio,
test this code:

Code: Select all | Expand

#INCLUDE "fivewin.ch"

#define HKEY_CURRENT_USER  2147483649
#define REG_DWORD                   ( 4 )           // 32-bit number

PROCEDURE Main()
   LOCAL hKey
   LOCAL nval := 4   // Drive C
   REGCREATEKEY( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", @hKey )
   REGSETVALUE( hKey, "NoDrives", 0, REG_DWORD, L2BIN( nVal ),4 )
   REGCLOSEKEY( hKey )
RETURN

Posted: Fri Sep 01, 2006 9:34 am
by Silvio
No it not run well
I see the hard disk

Posted: Fri Sep 01, 2006 1:16 pm
by RAMESHBABU
As per tests with the code I have posted in my previous posting, the effect
is taking place only when the system is restarted.

I have tested it only in Windows 98 SE.

- Ramesh Babu P

Posted: Sat Sep 02, 2006 7:12 pm
by Silvio
Dear Ugo,
the code sample run but I must restart the system to effect it !!!

Is there an solution to NOTrestart the system?