37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using Microsoft.Win32;
|
|
|
|
namespace BlogServer
|
|
{
|
|
public class FileAssociation
|
|
{
|
|
public static void RegisterFileAssociation( string className, string description, string extension )
|
|
{
|
|
// calculate file type name
|
|
string fileTypeName = String.Format( "BlogServer.{0}.1", className);
|
|
|
|
// write the extension key
|
|
using (RegistryKey extensionKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Classes\\" + extension) )
|
|
{
|
|
extensionKey.SetValue(null, fileTypeName);
|
|
RegistryKey extensionFileTypeKey = extensionKey.CreateSubKey(fileTypeName) ;
|
|
extensionFileTypeKey.Close();
|
|
}
|
|
|
|
// write the file type key
|
|
using (RegistryKey fileTypeKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Classes\\" + fileTypeName))
|
|
{
|
|
fileTypeKey.SetValue(null, description);
|
|
|
|
using ( RegistryKey curVerKey = fileTypeKey.CreateSubKey("CurVer"))
|
|
curVerKey.SetValue(null, fileTypeName);
|
|
|
|
using ( RegistryKey shellOpenCommandKey = fileTypeKey.CreateSubKey( @"shell\open\command"))
|
|
shellOpenCommandKey.SetValue(null, String.Format( "\"{0}\" \"%1\"", Process.GetCurrentProcess().MainModule.FileName) ) ;
|
|
}
|
|
}
|
|
}
|
|
}
|