/// <summary> /// Gets string value at specified location. /// </summary> /// <param name="field">Index into record to get string.</param> /// <returns>String value</returns> public string GetString(int field) { int bufferSize = 255; StringBuilder buffer = new StringBuilder(bufferSize); int error = MsiInterop.MsiRecordGetString(this.Handle, field, buffer, ref bufferSize); if (234 == error) { buffer.EnsureCapacity(++bufferSize); error = MsiInterop.MsiRecordGetString(this.Handle, field, buffer, ref bufferSize); } if (0 != error) { throw new Win32Exception(error); } return(0 < buffer.Length ? buffer.ToString() : null); }