Introducción:
Pues eso... que al crear los proyectos de Visual Studio 2008 en el Windows
Server 2008 de 64 bits que estoy probando, al crear los nuevos proyectos me
dice que la empresa es Microsoft... y claro, todavía no me han contratado
como para que salga el nombre de ellos en mis proyectos ;-))))
En el Windows Vista me pasaba algo parecido, pero no mostraba Microsoft,
simplemente no mostraba nada de nada.
En este artículo te voy a mostrar cómo cambiar en el registro de Windows
los datos del "propietario" del equipo, para que puedas poner lo que
quieras, también te mostraré cómo cambiar las plantillas de los proyectos
para que puedas personalizar el contenido de los ficheros AssemblyInfo, que
es donde se guardan los datos de la empresa que hace el programa y los datos
de copyright (derechos de autor), etc.
En las capturas que te voy a mostrar, (y los sitios del registro que
debes modificar) serán para un Windows Server 2008 de 64 bits y un Windows
Vista Ultimate de 32 bits. La ubicación de este último servirá para el resto
de Windows (supongo).
En el Windows Server 2008, al menos en la Release Candidate 1 (RC1) que
es la que estoy usando, el nombre del usuario de Windows es "Windows
User" y la organización es una cadena vacía, (ver la figura 1).
Esos datos son los que se usan cuando instalas algo... los datos que te
muestra para saber quién eres.
Figura 1. El nombre de usuario en Windows Server 2008 RC1
De esos datos, el Visual Studio 2008 (y también el 2005) usa el valor de
RegisteredOrganization, que ahora que lo pienso, puede que
no estuviera en blanco... ya que es posible que sea Microsoft, porque eso es
lo que me mostraba en los nuevos proyectos creados... bueno... es posible
que esa captura de la figura 1 no fuera la adecuada... pero la que te
muestro en la figura 2, si que lo es... además la he dejado en grande para
que se vea la clave del registro en la que están esos datos.
Como puedes ver en la figura 2, el dato que debes cambiar (que es el
único que usa el Visual Studio) es el nombre de la organización (RegisteredOrganization),
también puedes cambiar el valore de RegisteredOwner, pero
ese dato no se usa en el Visual Studio.
Fíjate en el nombre de la clave del registro: Wow6432Node,
ya que es un sistema de 64 bits y es ese valor el que usa el Visual Studio
2008 (y supongo que también el 2005, pero en el equipo de 64 bits solo tengo
instalado el 2008).
Figura 2. La clave del registro de Windows 2008 Server de 64 a cambiar
Al hacer ese cambio en el registro y crear un nuevo proyecto, los datos
que te mostrará en "Company" y en "Copyright"
serán los que hayas indicado en el registro de Windows (ver la figura 3).
Figura 3. Los datos del ensamblado de Visual Basic 2008
Si estás usando un Windows Vista, la clave del registro es diferente,
(ver la figura 4), al menos en un Windows de 32 bits, ya que en el de 64 es
posible que sea como el mostrado en la figura 2.
Figura 4. La clave del registro de Windows Vista de 32
Al hacer este cambio en el Vista, los datos del proyecto también serán
como lo mostrado en la figura 3 (en realidad esa captura es del Windows
Vista).
Modificar las plantillas de Visual Studio para personalizar el
AssemblyInfo
Independientemente de que cambies esos valores del registro de Windows,
también puedes cambiar las plantillas usadas por el Visual Studio 2008 para
cada nuevo proyecto.
Esa plantillas están en dos sitios diferentes, uno es para usarlo si se
indica en el devenv.exe, es decir, si se "resetea" la configuración de la
instalación de Visual Studio 2008 (o eso es lo que supongo). Y esos ficheros
o plantillas están en ficheros comprimidos (.zip). Pero además de esas
plantillas comprimidas, hay otras que no están comprimidas, aunque el nombre
de la carpeta (o directorio) en la que está se llama como los comprimidos,
de hecho mantiene hasta la extensión .zip.
En este último sitio es donde puedes cambiar los ficheros AssemblyInfo para
que se reflejen los valores que tu quieres que tengan en cada nuevo
proyecto.
La ubicación de esas plantillas estarán en directorios para cada tipo de
proyecto, es decir, habrá una para las aplicaciones de consola, otra para
las aplicaciones de Windows.Forms, otra para las aplicaciones de WPF, etc.
Además habrá carpetas para cada uno de los lenguajes que tengas instalado.
Por ejemplo, en el Windows Server 2008 de 64 bits, las plantillas del
proyecto de tipo consola de Visual Basic para una instalación en inglés,
está en la carpeta:
C:\Program Files (x86)\Microsoft Visual Studio
9.0\Common7\IDE\ProjectTemplatesCache\VisualBasic\Windows\1033\ConsoleApplication.zip
En un Windows Vista de 32 bits y también en inglés (tanto el Windows como
el Visual Studio), están en:
C:\Program Files\Microsoft Visual Studio
9.0\Common7\IDE\ProjectTemplatesCache\VisualBasic\Windows\1033\ConsoleApplication.zip
Esos directorios (aunque por la extensión parezcan que son ficheros ZIP)
contienen cada uno de los ficheros que se usan en ese tipo de proyecto, y
entre esos ficheros está el AssemblyInfo.
El contenido de ese fichero (o parte de él) es como esto que te muestro:
<Assembly: AssemblyTitle("$projectname$")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("$registeredorganization$")>
<Assembly: AssemblyProduct("$projectname$")>
<Assembly: AssemblyCopyright("Copyright © $registeredorganization$ $year$")>
<Assembly: AssemblyTrademark("")>
Listado 1. El código de AssemblyInfo.vb de una aplicación de consola
Como puedes ver ene el código del listado 1, en AssemblyCompany y también
en AssemblyCopyright se usa $registeredorganization$ para indicar al
asistente de Visual Studio de que use el nombre guardado en el registro de
Windows.
Pero si en lugar de que sea eso lo que se muestre (ver la figura 3),
quieres que sea algo más personalizado (o si no quieres o no puedes
modificar el registro de Windows), puedes escribir lo que quieras.
Por ejemplo, en mis proyectos siempre uso en el Copyright mis datos
(Guillermo 'guille' Som) y en el atributo Trademark, me gusta poner la
versión del lenguaje usado y el del framework que estoy usando. Así que...
mi fichero AssemblyInfo.vb tendrá el aspecto del listado 2.
<Assembly: AssemblyTitle("$projectname$")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("$registeredorganization$")>
<Assembly: AssemblyProduct("$projectname$")>
<Assembly: AssemblyCopyright("©Guillermo 'guille' Som, $year$")>
<Assembly: AssemblyTrademark("Microsoft Visual Basic 2008 (.NET 2.0)")>
Listado 2. El código personalizado de AssemblyInfo.vb de una aplicación de consola
De esta forma, al crear nuevos proyectos, lo que tendré en las
propiedades del ensamblado será lo que muestro en la figura 5.
Figura 5. Las propiedades del ensamblado con el fichero personalizado
Si estás usando el Windows Vista con las cosillas esas de seguridad,
debes tener en cuenta que esos ficheros están en un disco que el sistema
considera "protegido", por tanto, para modificarlos, lo mejor es que hagas
una copia del fichero AssemblyInfo en otro directorio "no protegido", lo
edites y guardes, y después lo vuelvas a copiar en el directorio original,
ya que si intentas editarlo directamente, pueden pasar dos cosas (es que no
lo he probado, pero supongo que ocurrirá algo), una es que no te deje
guardarlo y la otra (y más posible) es que lo guarde sin problemas y sin
decir ni mú... pero en vez de guardarlo en el directorio "protegido" lo
guardará en el de "VirtualStore". Y te puedo asegurar que el Visual Studio
no lo buscará en el directorio ese virtual...
Todo este rollo del VirtualStore es porque el Windows Vista
no permite que se grabe en el ciertas carpetas del sistema (como Windows,
Program files, el raíz del disco de arranque, etc.) si no se está ejecutando
como administrador al 100% de privilegios (o casi), y si guardas algo (desde
un programa, no directamente), pues se guarda, es decir, no da error de que
no se puede guardar ni pide permiso para hacer eso... simplemente lo guarda
y tú ni te enteras. Pero no lo guarda en la carpeta "protegida" sino en ese
otro sitio especial.
¿Dónde están esas plantillas?
Solo me queda decirte dónde están los ZIP con las plantillas (tendrás que
descomprimirlo o abrirlo con el propio Windows para modificarlos, pero en el
caso de Windows Vista, recuerda lo que te acabo de comentar hace un
momento).
Las plantillas están en la carpeta Common7\IDE\ProjectTemplates del
directorio de instalación de Visual Studio (recuerda que vale tanto para
Visual Studio 2005 como para Visual Studio 2008). En ese directorio tendrás
otras carpetas, según los lenguajes instalados, que como puedes ver en la
figura 6, también están los proyectos, Web, etc.
Figura 6. Estructura del directorio de los template en Windows Vista
Y en la figura 7 tienes la estructura del directorio con los templates
listos para usar, pero esta vez en un Windows Server 2008 y mostrando todos
los tipos de proyectos de Windows para Visual Basic.
Figura 7. Estructura del directorio de templates cache en un Windows Server
2008
Y esto es todo... recuerda que también "debería" funcionar con el Visual
Studio 2005 y en los Windows XP y Windows Server 2003.
Nos vemos.
Guillermo