internal static extern int WTSSetUserConfig([MarshalAs(UnmanagedType.LPTStr)] string pServerName, [MarshalAs(UnmanagedType.LPTStr)] string pUserName, WTS_CONFIG_CLASS WTSConfigClass, IntPtr pBuffer, long DataLength);
public object GetFieldValue(WTS_CONFIG_CLASS fieldId) { object ret = null; ret = Values[fieldId]; return(ret); }
public static extern bool WTSSetUserConfig( [MarshalAs(UnmanagedType.LPTStr)] string pServerName, [MarshalAs(UnmanagedType.LPTStr)] string pUserName, WTS_CONFIG_CLASS WTSConfigClass, [MarshalAs(UnmanagedType.LPTStr)] string pBuffer, uint dataLength);
public static string SetFieldValue(string dcName, string sAMAccountName, WTS_CONFIG_CLASS fieldID, object value, out bool success) { success = false; string ret = String.Format("Result setting {0} : ", fieldID.ToString()); long datalength = Marshal.SizeOf(value.GetType()); GCHandle buffer = GCHandle.Alloc(value); int rc = WTSSetUserConfig(dcName, sAMAccountName, fieldID, (IntPtr)buffer, datalength); return(ret); }
private object DecodeField(WTS_CONFIG_CLASS fieldId) { object ret = null; IntPtr pbuffer = IntPtr.Zero; long psize = 0; int rc = WTSQueryUserConfig(DC, User, (int)fieldId, out pbuffer, out psize); ret = MarshalField(fieldId, pbuffer); if (pbuffer != IntPtr.Zero) { WTSFreeMemory(pbuffer); } return(ret); }
public static extern bool WTSQueryUserConfig( [MarshalAs(UnmanagedType.LPTStr)] string pServerName, [MarshalAs(UnmanagedType.LPTStr)] string pUserName, WTS_CONFIG_CLASS WTSConfigClass, StringBuilder ppBuffer, out uint pBytesReturned);
public static extern bool WTSQueryUserConfig(string pServerName, string pUserName, WTS_CONFIG_CLASS configClass, Char[] ppBuffer, ref int pBytesReturned);
public static extern bool WTSSetUserConfig(string pServerName, string pUserName, WTS_CONFIG_CLASS WTSConfigClass, Char[] pBuffer, int DataLength);
private object MarshalField(WTS_CONFIG_CLASS fieldId, IntPtr pBuffer) { object ret = null; switch (fieldId) { case WTS_CONFIG_CLASS.AllowLogonTerminalServer: case WTS_CONFIG_CLASS.DeviceClientDefaultPrinter: case WTS_CONFIG_CLASS.DeviceClientDrives: case WTS_CONFIG_CLASS.DeviceClientPrinters: case WTS_CONFIG_CLASS.InheritInitialProgram: if (pBuffer == IntPtr.Zero) { ret = false; } else { ret = Convert.ToBoolean(Marshal.ReadInt16(pBuffer)); } break; case WTS_CONFIG_CLASS.InitialProgram: case WTS_CONFIG_CLASS.ModemCallbackPhoneNumber: case WTS_CONFIG_CLASS.TerminalServerHomeDir: case WTS_CONFIG_CLASS.TerminalServerHomeDirDrive: case WTS_CONFIG_CLASS.TerminalServerProfilePath: case WTS_CONFIG_CLASS.WorkingDirectory: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.PtrToStringUni(pBuffer); if (ret.ToString().Length == 0) { ret = "<not set>"; } } break; case WTS_CONFIG_CLASS.TimeoutSettingsConnections: case WTS_CONFIG_CLASS.TimeoutSettingsDisconnections: case WTS_CONFIG_CLASS.TimeoutSettingsIdle: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.ReadInt64(pBuffer); } break; case WTS_CONFIG_CLASS.BrokenTimeoutSettings: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.ReadInt32(pBuffer); ret = (WTS_BROKEN_TIMEOUT)ret; } break; case WTS_CONFIG_CLASS.ModemCallbackSettings: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.ReadInt32(pBuffer); ret = (WTS_USER_MODEM_CALLBACK)ret; } break; case WTS_CONFIG_CLASS.ShadowingSettings: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.ReadInt32(pBuffer); ret = (WTS_USER_SHADOWNG)ret; } break; case WTS_CONFIG_CLASS.ReconnectSettings: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.ReadInt32(pBuffer); ret = (WTS_RECONNECT)ret; } break; case WTS_CONFIG_CLASS.TerminalServerRemoteHomeDir: if (pBuffer == IntPtr.Zero) { ret = "<not set>"; } else { ret = Marshal.ReadInt32(pBuffer); ret = (WTS_REMOTE_HOMEDIR)ret; } break; } return(ret); }