lunes, 22 de marzo de 2021

Activar Windows Server 2008 R2 Terminal Server

 

Activar Windows Server 2008 R2 Terminal Server


Para generar licencias permanentes sigan los siguientes pasos.

Primero debemos agregar ambos roles , El "Host de sesión de escritorio remoto" y el servicio de "Administración de licencias de escritorio remoto"
Seleccionamos la opción activar en el "Administrador de licencias de escritorio remoto" con click derecho.
Este nos dará nuestro Product ID .  Y le indicamos que vamos a
activar vía Web o Explorador Web, para eso abrimos la siguiente pagina:

https://activate.microsoft.com/


Al proceso lo hice en ingles, aunque mi versión de Windows esta en Español.





Aquí ingresamos nuestro "Product ID" , rellenamos los campos obligatorios, y dejamos en Pais EEUU.





Este paso nos devolverá nuestro "License server ID"





Aquí lo ingresamos a nuestro equipo





En esta pantalla seleccionamos "Other Agreement"





El numero mágico es el 3.6.4.7.5.8.9 (sin puntos)  , es importante seleccionar la opción correcta como en el grafico.





Nos devuelve nuestro "Licence Key Pack ID"





Y lo ingresamos en nuestro equipo




Todo bien...





Otra imagen





Aquí le decimos a nuestro equipo que use el servidor de licencias que acabamos de activar.



 





Hasta luego.

martes, 2 de febrero de 2021

Activar FlashPlayer en navegador, despues de desactivación por fin de vida

Hay que crear un fichero con el nombre mms.cfg en la siguiente ruta:

C:\Windows\SysWOW64\Macromed\Flash

Y su configuración debe ser, o sea, dentro debe tener escrito:

EOLUninstallDisable=1
EnableAllowList=1
AllowListPreview=1
AllowListUrlPattern=http://url_a_dar_permisos (por ejemplo https://www.google.es)





jueves, 28 de enero de 2021

Trasferir usuarios y claves entre instancias de SQL

 In this article, server A and server B are different servers.

After you move a database from the instance of SQL Server on server A to the instance of SQL Server on server B, users may be unable to log in to the database on server B. Additionally, users may receive the following error message:

Login failed for user 'MyUser'. (Microsoft SQL Server, Error: 18456)

This problem occurs because you did not transfer the logins and the passwords from the instance of SQL Server on server A to the instance of SQL Server on server B.

 Note

The 18456-error message also occurs due to other reasons. For additional information on these causes and potential resolutions review MSSQLSERVER_18456.

To transfer the logins, use one of the following methods, as appropriate for your situation.

  • Method 1: Reset the password on the destination SQL Server computer (Server B)

    To resolve this issue, reset the password in SQL Server computer, and then script out the login.

     Note

    The password hashing algorithm is used when you reset the password.

  • Method 2: Transfer logins and passwords to destination server (Server B) using scripts generated on source server (Server A)

    1. Create stored procedures that will help generate necessary scripts to transfer logins and their passwords. To do this, connect to Server A using SQL Server Management Studio (SSMS) or any other client tool and run the following script:

      SQL
      USE master
      GO
      IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
      GO
      CREATE PROCEDURE sp_hexadecimal
      @binvalue varbinary(256),
      @hexvalue varchar (514) OUTPUT
      AS
      DECLARE @charvalue varchar (514)
      DECLARE @i int
      DECLARE @length int
      DECLARE @hexstring char(16)
      SELECT @charvalue = '0x'
      SELECT @i = 1
      SELECT @length = DATALENGTH (@binvalue)
      SELECT @hexstring = '0123456789ABCDEF'
      WHILE (@i <= @length)
      BEGIN
      DECLARE @tempint int
      DECLARE @firstint int
      DECLARE @secondint int
      SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
      SELECT @firstint = FLOOR(@tempint/16)
      SELECT @secondint = @tempint - (@firstint*16)
      SELECT @charvalue = @charvalue +
      SUBSTRING(@hexstring, @firstint+1, 1) +
      SUBSTRING(@hexstring, @secondint+1, 1)
      SELECT @i = @i + 1
      END
      
      SELECT @hexvalue = @charvalue
      GO
      
      IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin
      GO
      CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
      DECLARE @name sysname
      DECLARE @type varchar (1)
      DECLARE @hasaccess int
      DECLARE @denylogin int
      DECLARE @is_disabled int
      DECLARE @PWD_varbinary varbinary (256)
      DECLARE @PWD_string varchar (514)
      DECLARE @SID_varbinary varbinary (85)
      DECLARE @SID_string varchar (514)
      DECLARE @tmpstr varchar (1024)
      DECLARE @is_policy_checked varchar (3)
      DECLARE @is_expiration_checked varchar (3)
      
      DECLARE @defaultdb sysname
      
      IF (@login_name IS NULL)
      DECLARE login_curs CURSOR FOR
      
      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
      sys.server_principals p LEFT JOIN sys.syslogins l
      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
      ELSE
      DECLARE login_curs CURSOR FOR
      
      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
      sys.server_principals p LEFT JOIN sys.syslogins l
      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
      OPEN login_curs
      
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
      IF (@@fetch_status = -1)
      BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs
      DEALLOCATE login_curs
      RETURN -1
      END
      SET @tmpstr = '/* sp_help_revlogin script '
      PRINT @tmpstr
      SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + '*/'
      PRINT @tmpstr
      PRINT ''
      WHILE (@@fetch_status <> -1)
      BEGIN
      IF (@@fetch_status <> -2)
      BEGIN
      PRINT ''
      SET @tmpstr = '-- Login: ' + @name
      PRINT @tmpstr
      IF (@type IN ( 'G', 'U'))
      BEGIN -- NT authenticated account/group
      
      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
      END
      ELSE BEGIN -- SQL Server authentication
      -- obtain password and sid
      SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256))
      EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
      EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
      
      -- obtain password policy state
      SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
      SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
      
      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'
      
      IF ( @is_policy_checked IS NOT NULL )
      BEGIN
      SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
      END
      IF ( @is_expiration_checked IS NOT NULL )
      BEGIN
      SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
      END
      END
      IF (@denylogin = 1)
      BEGIN -- login is denied access
      SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
      END
      ELSE IF (@hasaccess = 0)
      BEGIN -- login exists but does not have access
      SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
      END
      IF (@is_disabled = 1)
      BEGIN -- login is disabled
      SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
      END
      PRINT @tmpstr
      END
      
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
      END
      CLOSE login_curs
      DEALLOCATE login_curs
      RETURN 0
      GO
      

       Note

      This script creates two stored procedures in the master database. The procedures are named sp_hexadecimal and sp_help_revlogin .

    2. In the SSMS query editor, select the Results to Text option.

    3. Run the following statement in the same or a new query window:

      SQL
      EXEC sp_help_revlogin

lunes, 26 de octubre de 2020

Importar o exportar autocompletar Outlook 2019, 2016

 

Importar o exportar autocompletar Outlook 2019, 2016

Tutorial con vídeo para importar contactos autocompletar Outlook 2016, 2019 o exportar autocompletar Outlook 2019, 2016.




Outlook es una de las plataformas más populares para todo lo relacionado con mensajería, contactos y demás elementos que implican el contacto con compañeros de trabajo y más, es por ello que Outlook integra numerosas funciones y una de ellas es la lista de autocompletar. Esta es una lista que es usada en la característica de comprobación automática de los nombres registrados en Outlook y también es usada como método de finalización automática.

 

Autocompletar, o memoria caché de alias, es creada de forma automática al momento de enviar mensajes de correo electrónico desde nuestra cuenta de Outlook, en ella se almacenan direcciones SMTP, entradas de LegacyExchangeDN, así como los nombres de los contactos a los que les hemos enviado correos con el fin de facilitar el proceso de envío.


Límites autocompletar
Microsoft ha dispuesto de una limitación en la lista de autocompletar, estos son:

 

  • Outlook 2016: 1000 entradas
  • Outlook 2013: 1000 entradas
  • Outlook 2010: 1000 entradas
  • Outlook 2007: 2000 entradas
  • Outlook 2003: 1000 entradas

 

 

Aquí se te explicará el proceso para importar o exportar esta lista de autocompletar y es un proceso que aplica por igual para Outlook 2016 o 2019.

 


 

Importar o exportar la lista de autocompletar en Outlook

 

Paso 1

Al usar la función de autocompletar cuando vamos a redactar un nuevo correo e ingresamos las primeras letras del nombre se despliegan las coincidencias asociadas:





 



 

 

Paso 2

El primer paso a dar será ir a la siguiente ruta desde el Explorador de archivos de Windows 10:
C:\Users\USUARIO\AppData\Local\Microsoft\Outlook\RoamCache
Paso 3

Veremos una lista de archivos con extensión .dat y debemos centrarnos en el archivo Stream_Autocomplete:

 



 

 


 

 

Paso 4

Es un archivo de poco peso, este archivo lo copiamos y lo pegamos en otra carpeta creada para ello:



 



 

 

Paso 5

Después de esto abrimos Outlook y vamos a “Archivo – Opciones” y en la ventana emergente iremos a la sección “Correo”, allí vamos a la sección “Enviar mensajes” y encontramos el botón “Vaciar lista de Autocompletar”:


 



 

 

Paso 6

Damos clic allí y se desplegara la siguiente advertencia. Confirmamos la acción dando clic en Sí. Damos clic en Aceptar en la ventana de opciones y cerramos Outlook.

 

 



 

Paso 7

Después de esto iremos de nuevo a la ruta:
C:\Users\USER\AppData\Local\Microsoft\Outlook\RoamCache
Paso 8

Allí seleccionamos todos los archivos, damos clic derecho y seleccionamos Eliminar:



 

 

 



 

Paso 9

Podemos ver la carpeta vacía:

 




 

 

Paso 10

Accedemos nuevamente a Outlook y al crear un nuevo correo podemos ver que al ingresar las iniciales del usuario no se lanzarán sugerencias:

 




 

 

Paso 11

Ingresamos el correo electrónico y enviamos el email, luego si intentamos enviar de nuevo a ese usuario podemos ver que está dentro de las sugerencias:

 




 

Paso 12

La razón es simple, al crear un nuevo correo, automáticamente se crea la lista de autocompletar en la ruta mencionada anteriormente:

 



 

 

Paso 13

Si deseamos recuperar la lista que teníamos anteriormente, debemos seleccionar el archivo .dat en la carpeta RoamCache con la tecla F2 y copiar su nombre:

 




 

 

Paso 14

Una vez lo hayamos copiado, iremos a la carpeta donde se ha creado la copia anteriormente, seleccionamos su nombre con la tecla F2:

 




 

 

Paso 15

Pegamos el nombre copiado para reemplazar este:

 


 

 

Paso 16

Ahora copiamos este último archivo y lo pegamos en la carpeta RoamCache, veremos lo siguiente. Damos clic en “Reemplazar el archivo en el destino” para finalizar el proceso de copia.

 

 




 

Paso 17

Accedemos de nuevo a Outlook y al crear el correo dispondremos del listado de contactos anteriores:

 




 

Con estos pasos hemos aprendido a importar y exportar la lista de autocompletar en Outlook 2016 o 2019.

 No funciona la SOMBRA en RDP Habilitar esta regla: En Firewall de Entrada, habilitar Escritorio Remoto - Instantanea (TCP de Entrada)