C# で System.IO.Ports.SerialPort クラスを使用しています。別の dll にあるヘルパー クラスからシリアル ポートを開くときに、UnAuthorizedAccessException がスローされます。ポートが勝利フォーム自体から開かれた場合、ポートを開くことは成功します!
_portNames = new List<string>();
_portNames.AddRange(SerialPort.GetPortNames());
_serialPort = new SerialPort();
_serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
_serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
var index = 0;
while (!_serialPort.IsOpen && index < _portNames.Count)
{
try
{
_serialPort.PortName = _portNames[index++];
_serialPort.Open();
}
catch (Exception ee)
{
_logger.Log(ee.Message, EventLogEntryType.Warning);
}
}