Category Archives: windows

Borders on WPF on 4K high resolution monitors

The issue is that when you view your WPF application on a normal 96 monitor everything looks fine, but once you view it on a high resolution monitor edges don’t seem to line up right everywhere and sometimes there are issues with the borders rendering and lining up correct.

The two key settings to try to fix this can be set at the page or window level and these are `UseLayoutRounding` and `SnapToDevicePixels`.

    UseLayoutRounding="True" SnapsToDevicePixels=True"

These features should work on both the classic .NET Framework and the new WPF running on .NET Core.


How to determine if a drive is an SSD or an HDD in Windows

In order to determine the drive type you can utilize Powershell.

  1. Click the Windows Icon (Start), then type Powershell and run it.
  2. At the Powershell prompt, type “Get-PhysicalDisk | Select-Object FriendlyName,DeviceId,MediaType”

  The result should be something as follows:

FriendlyName              DeviceId MediaType
------------              -------- ---------
Samsung SSD 850 PRO 512GB 0        SSD
WDC WD5000AAKX-753CA1     1        HDD

Visual Basic 5 & 6 INI Module

The following is a Visual Basic module to read and write from a Windows INI file. This makes use of the Windows API’s GetPrivateProfileString and WritePrivateProfileString to handle fast parsing and writing to the files.

VB Code

Attribute VB_Name = "modIni"
'  Module: INI Processing

' Windows API to read/write from the INI File
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Public Function GetFromIni(mySection As String, myEntry As String, iniFile As String) As String
    Dim buf As String
    Dim myLength As Long
    buf = String$(256, 0)   '256 null characters    
    myLength = GetPrivateProfileString(mySection, myEntry, "", buf, 256, iniFile)    
    getFromINI = Left$(buf, myLength)
End Function

Public Function WriteToIni(mySection As String, myEntry As String, buf As String, iniFile As String) As Boolean
    Dim x As Long
    x = WritePrivateProfileString(mySection, myEntry, buf, iniFile)

    If x = vbTrue Then
        writeToINI = True
        writeToINI = False
    End If
End Function

Cannot find VBRUN300.DLL.


An application your using throws the following error.

Cannot find VBRUN300.DLL.


“VBRUN300.dll” was one of the necessary files needed to run an application compiled under Visual Basic 3.x. Visual Basic 3.x was a 16-bit development environment that could run on operating systems as early as Windows 3.0/3.1 and continued to be supported into the 32-bit Windows OS’s as far as Windows 7.


The first for this error is to included the necessary files in the same directory as the executable in question. Microsoft still provides these files for download at:

SQL Server 2014–Database Roles Explained

The following is a listing of database rolls in SQL Server 2014.  These also apply to SQL Server 2005, SQL Server 2008, SQL Server 2008R2 and SQL Server 2012.

  • db_accessadmin – Group members can add or remove access for logins and groups.
  • db_backupoperator – Group members can back up the database.
  • db_datareader – Group members can read all data from all user tables.
  • db_datawriter – Group members can add, delete, or change data in all user tables.
  • db_ddladmin – Group members can run any data definition language (DDL) command in a database.
  • db_denydatareader – Group members cannot read any data in the user tables within a database.  Deny permissions always take precedence over grant permissions.
  • db_denydatawriter – Group members cannot add, modify, or delete any data in the user tables within a database. Deny permissions always take precedence over grant permissions.
  • db_owner – Group members can perform all configuration and maintenance activities on the database.  db_owner permissions can also drop the database.
    db_securityadmin – Group members can modify role rolls and manage permissions.

All database users belong to the public database role unless specifically denied that permission.  Users will inherit permissions of this role which generally should be restricted.

How do I search for an image with another image in Windows?


How do I search for an image using another image as the criteria?

Answer 1:

There are a few ways. If you are looking for an exact match you can use a program that creates unique hashes based on the contents of the file that will determine with certainty that it is identical. There are many free programs available to do this. Wikipedia lists open source/free duplicate file finders:

Answer 2:

The second method involves using a program that is able to compare two photos possibly of different sizes and estimate whether they are of of the same image. This is called a “reverse image search”. For Windows as of the writing of this article there is a free package called Visipics which can do a reverse image search on your hard drive. Visipics is also reported to work under Linux utilitizing the wine virtualization software. This package can be found here:

How can I tell what version of Windows 8 I am running?


You want to know what version of Windows 8 you are running.

Solution 1:

Open the “Control Panel”, then choose “System and Security” then choose “System”.  The edition of Windows you are running will be in the “Windows edition” section.

Solution 2:

Press “Windows Key+R” to open a run dialog and then type in “winver” to start the Windows version dialog program.  This should have the version at the top of the screen.

Solution 3:

Use the command prompt to access the system information.  Press “Windows Key+R” then type in “cmd” to start a command prompt.  From the command line enter this command:

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

Printer goes permanently offline fix


Whenever you print documents in Windows 8 or Windows 10 they do not print and the printer appears Offline.


Often times the printer will go offline and not come back online until you reboot.  Microsoft points to the vendor drivers as the cause and the vendor usually point a Microsoft as the cause.

A temporary work around is to restart the print spooler service.  This will save you from having to reboot.  To restart the print spooler follow these steps:

  1. Open “Computer Management”
  2. In the “Computer Management” window click “Computer Management->->Services and Applications->Services”.
  3. Right click on “Print Spooler” and choose “Restart”.

Is Visual Basic 6 still supported on Windows 8?


Is Visual Basic 6 still supported on Windows 8?


Yes and no. Yes, the runtime and extended runtime files are supported on Windows 8 and will likely also be supported on Windows 10. The IDE however is not supported and does not run in Windows 8. Running a Virtual Machine with Windows 7 maybe one of the only options to run the IDE in modern OS’s.

Windows 8: Display bluetooth file transfer


You want to locate and find the bluetooth file transfer wizard in Windows 8.


This maybe difficult to find if you are using a table with the desktop. There is a setting that will put it into the notification dock on the bottom right hand side of the desktop. To do this follow these steps:

  1. Press Windows Key+W then search for “bluetooth”
  2. Choose the “Change Bluetooth settings” option.
  3. On the “Options” tab check the “Show the Bluetooth icon in the notification area” option then press “OK” on the dialog to save.