Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Shared Memory erstellen, das für alle User lesbar ist?

Frage Microsoft

Mitglied: gypakk

gypakk (Level 1) - Jetzt verbinden

05.02.2008, aktualisiert 06.02.2008, 3899 Aufrufe, 1 Kommentar

Hallo,

ich verwende Shared Memory für den schnellen Datenaustausch zwischen zwei Programmen. Das funktioniert bis jetzt wunderbar.
Nun soll aber der Austausch aber zwischen zwei Prozessen stattfinden, die unter unterschiedlichen Useraccounts laufen.

Wie muss ich dazu den Shared Memory-Bereich generieren?

/* Shared Memory als IO-Bereich generieren */
cioh= CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(cio_t),"CIO");

if(cioh!=NULL && cio==NULL) /* IO-Bereich konnte generiert werden UND IO-Bereich ist noch nicht zugeordnet */
cio= (cio_t*)MapViewOfFile(cioh,FILE_MAP_ALL_ACCESS,0,0,sizeof(cio_t)); /* IO-Bereich zuordnen */


Hat jemand einen Tipp für mich?

gypakk
Mitglied: gypakk
06.02.2008 um 03:42 Uhr
Zwischenbericht:

Nicht schön, aber irgendwie funktioniert's. Zumindest unter XP. Vista-Test steht noch bevor...
Es scheint sich wohl um ein reines Berechtigungsproblem gehandelt zu haben. Das folgende Code-Stückchen setzt die Zugriffsrechte so, dass jeder auf das Shared Memory zugreifen darf.
Sorry, für Kommentierung bin ich inzwischen zu müde. Mein Bett schreit schon.

SID_IDENTIFIER_AUTHORITY sidiaworld= {SECURITY_WORLD_SID_AUTHORITY};
PSID psid;
SID_IDENTIFIER_AUTHORITY sidia;
PACL pacl;
int acllen;
BYTE sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
SECURITY_DESCRIPTOR* psd;
SECURITY_ATTRIBUTES sa;

i= AllocateAndInitializeSid(&sidiaworld,1,SECURITY_WORLD_RID,0,0,0,0,0,0,0,&psid);
acllen= sizeof(ACL)+sizeof(ACCESS_ALLOWED_ACE)*2+GetLengthSid(psid)*2-sizeof(DWORD)+10;
pacl= (ACL*)malloc(acllen);
i= InitializeAcl(pacl,acllen,ACL_REVISION);
i= AddAccessAllowedAce(pacl,ACL_REVISION,0x1fffff,psid);
psd= (SECURITY_DESCRIPTOR*)&sd;
i= InitializeSecurityDescriptor(psd,SECURITY_DESCRIPTOR_REVISION);
i= SetSecurityDescriptorDacl(psd,true,pacl,false);
sa.nLength= sizeof(sa);
sa.lpSecurityDescriptor= psd;
sa.bInheritHandle= true;
cioh= CreateFileMapping(INVALID_HANDLE_VALUE,&sa,PAGE_READWRITE,0,sizeof(cio_t),"?IO");
(...)

Sorry, mit der Formatierung hier im Forum tu ich mich irgendwie noch schwer...
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(4)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Server
gelöst Ubuntu: ftp user erstellen und Zugriff auf Webseite geben (7)

Frage von laster zum Thema Server ...

Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (20)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

Exchange Server
gelöst Shared user-mailbox, vertrauliche mails (9)

Frage von mclovinn zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (23)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
Welches OS für Firmengeräte? (17)

Frage von MarkusVH zum Thema Windows 10 ...

Hyper-V
Langsames Netzwerk i210 LAN Karte (11)

Frage von Akcent zum Thema Hyper-V ...

Netzwerke
Abisolierwerkzeug (11)

Frage von SarekHL zum Thema Netzwerke ...