Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3907 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 ..
Ähnliche Inhalte
Exchange Server
gelöst Shared user-mailbox, vertrauliche mails (9)

Frage von mclovinn zum Thema Exchange Server ...

Vmware
gelöst Datastore aus shared Storage für VMware (10)

Frage von Leo-le zum Thema Vmware ...

Exchange Server
Exchange 2010 Shared Mailbox und "senden als" (5)

Frage von Marzaru zum Thema Exchange Server ...

Batch & Shell
gelöst Ich Möchte in einem Batch Programm User erstellen (14)

Frage von Gangster137910 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(2)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Humor (lol)
gelöst Freidach Beitrag (40)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Firewall
gelöst Firewall Firmeneimsatz (22)

Frage von wiesi200 zum Thema Firewall ...

Multimedia & Zubehör
gelöst 8 GB USB Stick besitzt nur noch 4 MB Kapazität (13)

Frage von Gwahlers zum Thema Multimedia & Zubehör ...